edy / redux-persist-transform-filter

Filter transformator for redux-persist
MIT License
190 stars 21 forks source link

how do I create a save and load filter for multiple reducers? #2

Closed jasan-s closed 7 years ago

jasan-s commented 7 years ago

is this correct?

const saveSubsetFilterA = createFilter(
  'events',
  ['isFetching', 'error', 'activeEventIds', 'activeEventFeed', 'expiredEventIds', 'expiredEventFeed', 'wonEventIds', 'wonEventFeed', 'activeEventFlags', 'activeEventsWinnersFeed']
)
const loadSubsetFilterA = createFilter(
  'events',
  ['isFetching', 'error', 'activeEventIds', 'activeEventFeed', 'expiredEventIds', 'expiredEventFeed', 'wonEventIds', 'wonEventFeed', 'activeEventFlags', 'activeEventsWinnersFeed']
)
const saveSubsetFilterB = createFilter(
  'settings',
  ['pushPermission', 'fcmToken', 'verficationAttempt', 'lastVerficationAttemptTimeStamp', 'textPermission', 'phoneNumber', 'serverTimeOffset', 'launchedFromHomescreen']
)
const loadSubsetFilterB = createFilter(
  'settings',
  ['pushPermission', 'fcmToken', 'verficationAttempt', 'lastVerficationAttemptTimeStamp', 'textPermission', 'phoneNumber', 'serverTimeOffset', 'launchedFromHomescreen'])

/////////////////////////////////////////////////////////////
       persistStore(store, {storage: localforage, blacklist: ['routing', 'listeners', 'form', 'notifications', 'analytics'],
        transforms: [saveSubsetFilterA, loadSubsetFilterA, saveSubsetFilterB, loadSubsetFilterB]}, () => {
          this.setState({ rehydrated: true })
        })
edy commented 7 years ago
const saveSubsetFilterA = createFilter(
  'events',
  ['isFetching', 'error', 'activeEventIds', 'activeEventFeed', 'expiredEventIds', 'expiredEventFeed', 'wonEventIds', 'wonEventFeed', 'activeEventFlags', 'activeEventsWinnersFeed']
)
const loadSubsetFilterA = createFilter(
  'events',
  null,
  ['isFetching', 'error', 'activeEventIds', 'activeEventFeed', 'expiredEventIds', 'expiredEventFeed', 'wonEventIds', 'wonEventFeed', 'activeEventFlags', 'activeEventsWinnersFeed']
)
const saveSubsetFilterB = createFilter(
  'settings',
  ['pushPermission', 'fcmToken', 'verficationAttempt', 'lastVerficationAttemptTimeStamp', 'textPermission', 'phoneNumber', 'serverTimeOffset', 'launchedFromHomescreen']
)
const loadSubsetFilterB = createFilter(
  'settings',
  null,
  ['pushPermission', 'fcmToken', 'verficationAttempt', 'lastVerficationAttemptTimeStamp', 'textPermission', 'phoneNumber', 'serverTimeOffset', 'launchedFromHomescreen']
)

/////////////////////////////////////////////////////////////
persistStore(store, {storage: localforage, blacklist: ['routing', 'listeners', 'form', 'notifications', 'analytics'],
transforms: [saveSubsetFilterA, loadSubsetFilterA, saveSubsetFilterB, loadSubsetFilterB]}, () => {
  this.setState({ rehydrated: true })
})

actally, you only need the save filter, because you would always load only the saved properties

jasan-s commented 7 years ago

@edy like this?

persistStore(store, {storage: localforage, blacklist: ['routing', 'listeners', 'form', 'notifications', 'analytics'],
transforms: [saveSubsetFilterA, saveSubsetFilterB]}, () => {
  this.setState({ rehydrated: true })
})
edy commented 7 years ago

yes