feat(platform): persist discoveryExploreFilter in USER_PREFS
Phase 146 (v0.8.111): setDiscoveryFilter is async and saves query, sort, minMembers, and tag to discoveryExploreFilter prefs. Restore on boot via _ingestDiscoveryExploreBaselineFromPrefs. Emits discovery after filter updates. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -60,6 +60,7 @@ Expose a single `EventEmitter` API the UI drives over IPC (`apps/pearcord/index.
|
||||
|--------|------|
|
||||
| `joinVoice`, `leaveVoice`, `setVoiceMute` | `pearcord-voice` + guild gossip |
|
||||
| `setVoiceRosterChannelExpanded(channelId, expanded)` | USER_PREFS `voiceRosterExpandedChannelIds` (v0.8.110) |
|
||||
| `setDiscoveryFilter({ query, sort, minMembers, tag })` | Persists `discoveryExploreFilter` in USER_PREFS (v0.8.111) |
|
||||
| Voice/s screen share ingest | `VoiceMediaHub`, `ScreenShareHub` wired in `_openGuild` |
|
||||
|
||||
### Views & companion
|
||||
|
||||
@@ -1181,7 +1181,7 @@ class PearcordPlatform extends EventEmitter {
|
||||
return []
|
||||
}
|
||||
|
||||
setDiscoveryFilter ({ query, sort, minMembers, tag }) {
|
||||
async setDiscoveryFilter ({ query, sort, minMembers, tag }) {
|
||||
if (query !== undefined) this._discoveryFilter.query = String(query || '').trim()
|
||||
if (sort === 'members' || sort === 'name' || sort === 'newest') {
|
||||
this._discoveryFilter.sort = sort
|
||||
@@ -1192,7 +1192,13 @@ class PearcordPlatform extends EventEmitter {
|
||||
if (tag !== undefined) {
|
||||
this._discoveryFilter.tag = String(tag || '').trim().toLowerCase()
|
||||
}
|
||||
if (this.userSettings) {
|
||||
await this.updateUserPrefs({
|
||||
discoveryExploreFilter: { ...this._discoveryFilter }
|
||||
})
|
||||
}
|
||||
this.refreshDiscoveryListingsFromMesh().catch(() => {})
|
||||
this.emit('discovery')
|
||||
return { ...this._discoveryFilter }
|
||||
}
|
||||
|
||||
@@ -1261,6 +1267,21 @@ class PearcordPlatform extends EventEmitter {
|
||||
prefs.voiceRosterExpandedChannelIds.map((id) => String(id)).filter(Boolean)
|
||||
)
|
||||
}
|
||||
const df = prefs.discoveryExploreFilter
|
||||
if (df && typeof df === 'object') {
|
||||
if (df.query !== undefined) {
|
||||
this._discoveryFilter.query = String(df.query || '').trim()
|
||||
}
|
||||
if (df.sort === 'members' || df.sort === 'name' || df.sort === 'newest') {
|
||||
this._discoveryFilter.sort = df.sort
|
||||
}
|
||||
if (df.minMembers !== undefined) {
|
||||
this._discoveryFilter.minMembers = Math.max(0, Number(df.minMembers) || 0)
|
||||
}
|
||||
if (df.tag !== undefined) {
|
||||
this._discoveryFilter.tag = String(df.tag || '').trim().toLowerCase()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async setVoiceRosterChannelExpanded (channelId, expanded) {
|
||||
|
||||
Reference in New Issue
Block a user