From 19aae146c6de521415200126160fb782e56d57bc Mon Sep 17 00:00:00 2001 From: kresnaputra Date: Fri, 19 Mar 2021 13:30:21 +0800 Subject: [PATCH] add redux action for update --- app/actions/actionsTypes.js | 2 +- app/actions/settings.js | 7 +++++++ app/lib/rocketchat.js | 3 ++- app/reducers/settings.js | 5 +++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index 1fd8679bc..1b792502f 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -66,7 +66,7 @@ export const INVITE_LINKS = createRequestTypes('INVITE_LINKS', [ 'CLEAR', ...defaultTypes ]); -export const SETTINGS = createRequestTypes('SETTINGS', ['CLEAR', 'ADD']); +export const SETTINGS = createRequestTypes('SETTINGS', ['CLEAR', 'ADD', 'UPDATE']); export const APP_STATE = createRequestTypes('APP_STATE', ['FOREGROUND', 'BACKGROUND']); export const ENTERPRISE_MODULES = createRequestTypes('ENTERPRISE_MODULES', ['CLEAR', 'SET']); export const ENCRYPTION = createRequestTypes('ENCRYPTION', ['INIT', 'STOP', 'DECODE_KEY', 'SET', 'SET_BANNER']); diff --git a/app/actions/settings.js b/app/actions/settings.js index 381958c54..6fae375bc 100644 --- a/app/actions/settings.js +++ b/app/actions/settings.js @@ -7,6 +7,13 @@ export function addSettings(settings) { }; } +export function updateSettings(id, value) { + return { + type: SETTINGS.UPDATE, + payload: { id, value } + }; +} + export function clearSettings() { return { type: SETTINGS.CLEAR diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index c957fac39..e736f6d9c 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -62,6 +62,7 @@ import UserPreferences from './userPreferences'; import { Encryption } from './encryption'; import EventEmitter from '../utils/events'; import { sanitizeLikeString } from './database/utils'; +import { updateSettings } from '../actions/settings'; const TOKEN_KEY = 'reactnativemeteor_usertoken'; const CURRENT_SERVER = 'currentServer'; @@ -303,7 +304,7 @@ const RocketChat = { u._raw.value_as_boolean = value; }); }); - setSettings(); + reduxStore.dispatch(updateSettings(_id, value)); } catch (err) { console.log(err); } diff --git a/app/reducers/settings.js b/app/reducers/settings.js index 9e037b1d0..6e9ab5005 100644 --- a/app/reducers/settings.js +++ b/app/reducers/settings.js @@ -9,6 +9,11 @@ export default (state = initialState, action) => { ...state, ...action.payload }; + case SETTINGS.UPDATE: + return { + ...state, + [action.payload.id]: action.payload.value + }; case SETTINGS.CLEAR: return initialState; default: