-
Notifications
You must be signed in to change notification settings - Fork 370
Feature/refactor redux #414
Changes from 3 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,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; | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| export const SET_USER_AGENT = '@@quran/audioplayer/SET_USER_AGENT'; | ||
| export const SET_CURRENT_FILE = '@@quran/audioplayer/SET_CURRENT_FILE'; | ||
| export const SET_CURRENT_WORD = '@@quran/audioplayer/SET_CURRENT_WORD'; | ||
| export const PLAY = '@@quran/audioplayer/PLAY'; | ||
| export const PAUSE = '@@quran/audioplayer/PAUSE'; | ||
| export const NEXT = '@@quran/audioplayer/NEXT'; | ||
| export const SET_AYAH = '@@quran/audioplayer/SET'; | ||
| export const PREVIOUS = '@@quran/audioplayer/PREVIOUS'; | ||
| export const SET_REPEAT = '@@quran/audioplayer/SET_REPEAT'; | ||
| export const TOGGLE_SCROLL = '@@quran/audioplayer/TOGGLE_SCROLL'; | ||
| export const BUILD_ON_CLIENT = '@@quran/audioplayer/BUILD_ON_CLIENT'; | ||
| export const UPDATE = '@@quran/audioplayer/UPDATE'; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| export const LOAD = '@@quran/ayahs/LOAD'; | ||
| export const LOAD_SUCCESS = '@@quran/ayahs/LOAD_SUCCESS'; | ||
| export const LOAD_FAIL = '@@quran/ayahs/LOAD_FAIL'; | ||
| export const CLEAR_CURRENT = '@@quran/ayahs/CLEAR_CURRENT'; | ||
| export const SET_CURRENT_AYAH = '@@quran/ayahs/SET_CURRENT_AYAH'; | ||
| export const SET_CURRENT_WORD = '@@quran/ayahs/SET_CURRENT_WORD'; | ||
| export const CLEAR_CURRENT_WORD = '@@quran/ayahs/CLEAR_CURRENT_WORD'; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| export const LOAD = '@@quran/surahs/LOAD'; | ||
| export const LOAD_SUCCESS = '@@quran/surahs/LOAD_SUCCESS'; | ||
| export const LOAD_FAIL = '@@quran/surahs/LOAD_FAIL'; | ||
| export const LOAD_INFO = '@@quran/surahs/LOAD_INFO'; | ||
| export const LOAD_INFO_SUCCESS = '@@quran/surahs/LOAD_INFO_SUCCESS'; | ||
| export const LOAD_INFO_FAIL = '@@quran/surahs/LOAD_INFO_FAIL'; | ||
| export const SET_CURRENT = '@@quran/surahs/SET_CURRENT'; |
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.
AudioPlayerActionTypesWhy camel cased?