-
Notifications
You must be signed in to change notification settings - Fork 361
Feature/refactor redux #414
Changes from 6 commits
afd3172
171f79c
f2db70e
a4833f1
42f6eaa
ae7439b
6b53f23
01df278
9f85735
33d51b6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
import { | ||
SET_USER_AGENT, | ||
SET_CURRENT_FILE, | ||
SET_CURRENT_WORD, | ||
PLAY, | ||
PAUSE, | ||
NEXT, | ||
SET_AYAH, | ||
PREVIOUS, | ||
SET_REPEAT, | ||
TOGGLE_SCROLL, | ||
BUILD_ON_CLIENT, | ||
UPDATE | ||
} from '../constants/AudioPlayerActionTypes.js'; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
export function setUserAgent(userAgent) { | ||
return { | ||
type: SET_USER_AGENT, | ||
userAgent | ||
}; | ||
} | ||
|
||
export function setCurrentFile(file) { | ||
return { | ||
type: SET_CURRENT_FILE, | ||
file | ||
}; | ||
} | ||
|
||
export function setCurrentWord(word) { | ||
return { | ||
type: SET_CURRENT_WORD, | ||
word | ||
}; | ||
} | ||
|
||
export function play() { | ||
return { | ||
type: PLAY | ||
}; | ||
} | ||
|
||
export function pause() { | ||
return { | ||
type: PAUSE | ||
}; | ||
} | ||
|
||
export function next(currentAyah) { | ||
return { | ||
type: NEXT, | ||
currentAyah | ||
}; | ||
} | ||
|
||
export function setAyah(currentAyah) { | ||
return { | ||
type: SET_AYAH, | ||
currentAyah | ||
}; | ||
} | ||
|
||
export function previous(currentAyah) { | ||
return { | ||
type: PREVIOUS, | ||
currentAyah | ||
}; | ||
} | ||
|
||
export function setRepeat(repeat) { | ||
return { | ||
type: SET_REPEAT, | ||
repeat | ||
}; | ||
} | ||
|
||
export function toggleScroll() { | ||
return { | ||
type: TOGGLE_SCROLL | ||
}; | ||
} | ||
|
||
export function buildOnClient(surahId) { | ||
return { | ||
type: BUILD_ON_CLIENT, | ||
surahId | ||
}; | ||
} | ||
|
||
export function update(payload) { | ||
return { | ||
type: UPDATE, | ||
payload | ||
}; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
import { ayahsSchema } from '../schemas'; | ||
|
||
import { arrayOf } from 'normalizr'; | ||
|
||
import { | ||
LOAD, | ||
LOAD_SUCCESS, | ||
LOAD_FAIL, | ||
CLEAR_CURRENT, | ||
SET_CURRENT_AYAH, | ||
SET_CURRENT_WORD, | ||
CLEAR_CURRENT_WORD | ||
|
||
} from '../constants/AyahsActionTypes.js'; | ||
|
||
// For safe measure | ||
const defaultOptions = { | ||
audio: 8, | ||
quran: 1, | ||
content: [19] | ||
}; | ||
|
||
export function load(id, from, to, options = defaultOptions) { | ||
const { audio, quran, content } = options; | ||
|
||
return { | ||
types: [LOAD, LOAD_SUCCESS, LOAD_FAIL], | ||
schema: arrayOf(ayahsSchema), | ||
promise: (client) => client.get(`/v2/surahs/${id}/ayahs`, { | ||
params: { | ||
from, | ||
to, | ||
audio, | ||
quran, | ||
content | ||
} | ||
}), | ||
surahId: id | ||
}; | ||
} | ||
|
||
export function clearCurrent(id) { | ||
return { | ||
type: CLEAR_CURRENT, | ||
id | ||
}; | ||
} | ||
|
||
export function clearCurrentWord() { | ||
return { | ||
type: CLEAR_CURRENT_WORD | ||
}; | ||
} | ||
|
||
export function setCurrentAyah(id) { | ||
return { | ||
type: SET_CURRENT_AYAH, | ||
id | ||
}; | ||
} | ||
|
||
export function setCurrentWord(id) { | ||
return { | ||
type: SET_CURRENT_WORD, | ||
id | ||
}; | ||
} | ||
|
||
export function isLoaded(globalState, surahId, from, to) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should we use store checks in action files too? Since they don't actually dispatch an action There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this one is an odd case, I am not sure where to put it. It only gets used inside surah/connect.js, possibly a helper function? |
||
return ( | ||
globalState.ayahs.entities[surahId] && | ||
globalState.ayahs.entities[surahId][`${surahId}:${from}`] && | ||
globalState.ayahs.entities[surahId][`${surahId}:${to}`] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. indentation :) |
||
); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import { LOAD } from '../constants/FontFaceActionTypes.js'; | ||
|
||
export function load(className) { | ||
return { | ||
type: LOAD, | ||
className | ||
}; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import cookie from 'react-cookie'; | ||
import { TOGGLE_READING_MODE, SET_OPTION } from '../constants/OptionsActionTypes.js' | ||
|
||
export function isReadingMode(globalState) { | ||
return globalState.options.isReadingMode; | ||
} | ||
|
||
export function setOption(payload) { | ||
const options = cookie.load('options') || {}; // protect against first timers. | ||
Object.keys(payload).forEach(option => { options[option] = payload[option]; }); | ||
cookie.save('options', JSON.stringify(options)); | ||
|
||
return { | ||
type: SET_OPTION, | ||
payload | ||
}; | ||
} | ||
|
||
export function toggleReadingMode() { | ||
return { | ||
type: TOGGLE_READING_MODE | ||
}; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import { ayahsSchema } from '../schemas'; | ||
import { arrayOf } from 'normalizr'; | ||
|
||
import { | ||
SEARCH, | ||
SEARCH_SUCCESS, | ||
SEARCH_FAIL | ||
} from '../constants/SearchActionTypes.js'; | ||
|
||
export function search(params) { | ||
return { | ||
types: [SEARCH, SEARCH_SUCCESS, SEARCH_FAIL], | ||
schema: {results: arrayOf({ayah: ayahsSchema})}, | ||
promise: (client) => client.get('/v2/search', { params }), | ||
params | ||
}; | ||
} | ||
|
||
export function isQueried() { | ||
return false; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { surahsSchema } from '../schemas'; | ||
import { arrayOf } from 'normalizr'; | ||
import { | ||
LOAD, | ||
LOAD_SUCCESS, | ||
LOAD_FAIL, | ||
LOAD_INFO, | ||
LOAD_INFO_SUCCESS, | ||
LOAD_INFO_FAIL, | ||
SET_CURRENT | ||
} from '../constants/SurahsActionTypes.js' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. indent |
||
|
||
export function loadAll() { | ||
return { | ||
types: [LOAD, LOAD_SUCCESS, LOAD_FAIL], | ||
schema: arrayOf(surahsSchema), | ||
promise: (client) => client.get('/v2/surahs') | ||
}; | ||
} | ||
|
||
export function load(id) { | ||
return { | ||
types: [LOAD, LOAD_SUCCESS, LOAD_FAIL], | ||
schema: arrayOf(surahsSchema), | ||
promise: (client) => client.get(`/v2/surahs/${id}`) | ||
}; | ||
} | ||
|
||
export function loadInfo(link) { | ||
return { | ||
types: [LOAD_INFO, LOAD_INFO_SUCCESS, LOAD_INFO_FAIL], | ||
promise: (client) => client.get(`http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&titles=${link}&redirects=true`) // eslint-disable-line max-len | ||
}; | ||
} | ||
|
||
export function setCurrent(id) { | ||
return { | ||
type: SET_CURRENT, | ||
current: id | ||
}; | ||
} | ||
|
||
export function isSingleLoaded(globalState, id) { | ||
return !!globalState.surahs.entities[id]; | ||
} | ||
|
||
export function isAllLoaded(globalState) { | ||
return Object.keys(globalState.surahs.entities).length === 114; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thoughts about the file names just
/actions/audioplayer
Also, audioplayer has not been cased likeaudioPlayer
throughout