-
Notifications
You must be signed in to change notification settings - Fork 371
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'; | ||
|
||
|
|
||
| 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) { | ||
|
||
| return ( | ||
| globalState.ayahs.entities[surahId] && | ||
| globalState.ayahs.entities[surahId][`${surahId}:${from}`] && | ||
| globalState.ayahs.entities[surahId][`${surahId}:${to}`] | ||
|
||
| ); | ||
| } | ||
| 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' | ||
|
||
|
|
||
| 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/audioplayerAlso, audioplayer has not been cased likeaudioPlayerthroughout