@ -1,6 +1,7 @@
import { Iterable , fromJS } from 'immutable' ;
import { hydrateCompose } from './compose' ;
import { importFetchedAccounts } from './importer' ;
import { saveSettings } from './settings' ;
export const STORE _HYDRATE = 'STORE_HYDRATE' ;
export const STORE _HYDRATE _LAZY = 'STORE_HYDRATE_LAZY' ;
@ -9,9 +10,22 @@ const convertState = rawState =>
fromJS ( rawState , ( k , v ) =>
Iterable . isIndexed ( v ) ? v . toList ( ) : v . toMap ( ) ) ;
const applyMigrations = ( state ) => {
return state . withMutations ( state => {
// Migrate glitch-soc local-only “Show unread marker” setting to Mastodon's setting
if ( state . getIn ( [ 'local_settings' , 'notifications' , 'show_unread' ] ) !== undefined ) {
// Only change if the Mastodon setting does not deviate from default
if ( state . getIn ( [ 'settings' , 'notifications' , 'showUnread' ] ) !== false ) {
state . setIn ( [ 'settings' , 'notifications' , 'showUnread' ] , state . getIn ( [ 'local_settings' , 'notifications' , 'show_unread' ] ) ) ;
}
state . removeIn ( [ 'local_settings' , 'notifications' , 'show_unread' ] )
}
} ) ;
} ;
export function hydrateStore ( rawState ) {
return dispatch => {
const state = convertState ( rawState ) ;
const state = applyMigrations( convertState( rawState ) ) ;
dispatch ( {
type : STORE _HYDRATE ,
@ -20,5 +34,6 @@ export function hydrateStore(rawState) {
dispatch ( hydrateCompose ( ) ) ;
dispatch ( importFetchedAccounts ( Object . values ( rawState . accounts ) ) ) ;
dispatch ( saveSettings ( ) ) ;
} ;
} ;