tooot/src/utils/slices/versionSlice.ts

44 lines
1.1 KiB
TypeScript
Raw Normal View History

2021-05-12 22:45:51 +02:00
import apiGeneral from '@api/general'
2021-05-09 21:59:03 +02:00
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
import { RootState } from '@root/store'
2021-10-24 00:43:00 +02:00
import Constants from 'expo-constants'
2021-05-09 21:59:03 +02:00
export const retriveVersionLatest = createAsyncThunk(
'version/latest',
async () => {
const res = await apiGeneral<{ latest: string }>({
method: 'get',
domain: 'tooot.app',
url: 'version.json'
})
return res.body.latest
}
)
export type VersionState = {
update: boolean
}
export const versionInitialState = {
update: false
}
const versionSlice = createSlice({
name: 'version',
initialState: versionInitialState,
reducers: {},
extraReducers: builder => {
builder.addCase(retriveVersionLatest.fulfilled, (state, action) => {
2021-08-29 15:25:38 +02:00
if (action.payload && Constants.manifest?.version) {
2022-02-07 23:03:21 +01:00
if (parseFloat(action.payload) > parseFloat(Constants.manifest.version)) {
2021-05-09 21:59:03 +02:00
state.update = true
}
}
})
}
})
export const getVersionUpdate = (state: RootState) => state.version.update
export default versionSlice.reducer