Skip to content

Commit

Permalink
T1
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Dec 14, 2023
1 parent df874b8 commit bfae6b1
Showing 1 changed file with 20 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ function postF() {
}

const MAX_RECENTLY_USED = 10
const lsKeyFavoritesF = () => `favoriteTracks-${postF()}}`

/**
* #stateModel HierarchicalTrackSelectorWidget
Expand Down Expand Up @@ -79,21 +78,13 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
view: types.safeReference(
pluginManager.pluggableMstType('view', 'stateModel'),
),
/**
* #property
* this is removed in postProcessSnapshot, so is generally only loaded
* from localstorage
*/
favorites: types.optional(types.array(types.string), () =>
JSON.parse(localStorageGetItem(lsKeyFavoritesF()) || '[]'),
),

/**
* #property
*/
faceted: types.optional(facetedStateTreeF(), {}),
})
.volatile(() => ({
favorites: [] as string[],
recentlyUsed: [] as string[],
selection: [] as AnyConfigurationModel[],
filterText: '',
Expand Down Expand Up @@ -170,13 +161,13 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
* #action
*/
removeFromFavorites(trackId: string) {
self.favorites.remove(trackId)
self.favorites = self.favorites.filter(f => f !== trackId)
},
/**
* #action
*/
clearFavorites() {
self.favorites.clear()
self.favorites = []
},

/**
Expand All @@ -191,6 +182,12 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
setRecentlyUsed(str: string[]) {
self.recentlyUsed = str
},
/**
* #action
*/
setFavorites(str: string[]) {
self.favorites = str
},
/**
* #action
*/
Expand All @@ -212,7 +209,6 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
: [...self.recentlyUsed, id]
}
},

/**
* #action
*/
Expand Down Expand Up @@ -243,7 +239,6 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
expandAllCategories() {
self.collapsed.clear()
},

/**
* #action
*/
Expand Down Expand Up @@ -309,6 +304,9 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
.filter(f => !!f)
.join('-')}`
},
get favoritesLocalStorageKey() {
return `favoriteTracks-${postF()}`
},
/**
* #getter
*/
Expand Down Expand Up @@ -364,7 +362,7 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
get favoriteTracks() {
return self.favorites
.filter(t => self.allTrackConfigurationTrackIdSet.has(t))
.map(t => self.allTrackConfigurationTrackIdSet.get(t))
.map(t => self.allTrackConfigurationTrackIdSet.get(t)!)
},

/**
Expand All @@ -374,7 +372,7 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
get recentlyUsedTracks() {
return self.recentlyUsed
.filter(t => self.allTrackConfigurationTrackIdSet.has(t))
.map(t => self.allTrackConfigurationTrackIdSet.get(t))
.map(t => self.allTrackConfigurationTrackIdSet.get(t)!)
},
}))
.views(self => ({
Expand Down Expand Up @@ -505,14 +503,19 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
localStorageGetItem(self.recentlyUsedLocalStorageKey) || '[]',
),
)
self.setFavorites(
JSON.parse(
localStorageGetItem(self.favoritesLocalStorageKey) || '[]',
),
)
}),
)
// this should be the second autorun
addDisposer(
self,
autorun(() => {
localStorageSetItem(
lsKeyFavoritesF(),
self.favoritesLocalStorageKey,
JSON.stringify(self.favorites),
)
if (self.recentlyUsed) {
Expand All @@ -525,10 +528,6 @@ export default function stateTreeFactory(pluginManager: PluginManager) {
)
},
}))
.postProcessSnapshot(snap => {
const { favorites: _, ...rest } = snap as Omit<typeof snap, symbol>
return rest
})
}

export type HierarchicalTrackSelectorStateModel = ReturnType<
Expand Down

0 comments on commit bfae6b1

Please sign in to comment.