Set default feeds
This commit is contained in:
parent
9c9e4e5691
commit
2f4408582b
2 changed files with 75 additions and 2 deletions
|
@ -94,6 +94,49 @@ export function SUGGESTED_FOLLOWS(serviceUrl: string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const STAGING_DEFAULT_FEED = (rkey: string) =>
|
||||||
|
`at://did:plc:wqzurwm3kmaig6e6hnc2gqwo/app.bsky.feed.generator/${rkey}`
|
||||||
|
export const PROD_DEFAULT_FEED = (rkey: string) =>
|
||||||
|
`at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/${rkey}`
|
||||||
|
export async function DEFAULT_FEEDS(
|
||||||
|
serviceUrl: string,
|
||||||
|
resolveHandle: (name: string) => Promise<string>,
|
||||||
|
) {
|
||||||
|
if (serviceUrl.includes('localhost')) {
|
||||||
|
const aliceDid = await resolveHandle('alice.test')
|
||||||
|
return {
|
||||||
|
pinned: [`at://${aliceDid}/app.bsky.feed.generator/alice-favs`],
|
||||||
|
saved: [`at://${aliceDid}/app.bsky.feed.generator/alice-favs`],
|
||||||
|
}
|
||||||
|
} else if (serviceUrl.includes('staging')) {
|
||||||
|
return {
|
||||||
|
pinned: [
|
||||||
|
STAGING_DEFAULT_FEED('skyline'),
|
||||||
|
STAGING_DEFAULT_FEED('whats-hot'),
|
||||||
|
],
|
||||||
|
saved: [
|
||||||
|
STAGING_DEFAULT_FEED('bsky-team'),
|
||||||
|
STAGING_DEFAULT_FEED('skyline'),
|
||||||
|
STAGING_DEFAULT_FEED('whats-hot'),
|
||||||
|
STAGING_DEFAULT_FEED('hot-classic'),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
pinned: [
|
||||||
|
STAGING_DEFAULT_FEED('skyline'),
|
||||||
|
STAGING_DEFAULT_FEED('whats-hot'),
|
||||||
|
],
|
||||||
|
saved: [
|
||||||
|
STAGING_DEFAULT_FEED('bsky-team'),
|
||||||
|
STAGING_DEFAULT_FEED('skyline'),
|
||||||
|
STAGING_DEFAULT_FEED('whats-hot'),
|
||||||
|
STAGING_DEFAULT_FEED('hot-classic'),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const POST_IMG_MAX = {
|
export const POST_IMG_MAX = {
|
||||||
width: 2000,
|
width: 2000,
|
||||||
height: 2000,
|
height: 2000,
|
||||||
|
|
|
@ -11,6 +11,7 @@ import {
|
||||||
ALWAYS_FILTER_LABEL_GROUP,
|
ALWAYS_FILTER_LABEL_GROUP,
|
||||||
ALWAYS_WARN_LABEL_GROUP,
|
ALWAYS_WARN_LABEL_GROUP,
|
||||||
} from 'lib/labeling/const'
|
} from 'lib/labeling/const'
|
||||||
|
import {DEFAULT_FEEDS} from 'lib/constants'
|
||||||
import {isIOS} from 'platform/detection'
|
import {isIOS} from 'platform/detection'
|
||||||
|
|
||||||
const deviceLocales = getLocales()
|
const deviceLocales = getLocales()
|
||||||
|
@ -95,6 +96,8 @@ export class PreferencesModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
async sync() {
|
async sync() {
|
||||||
|
// fetch preferences
|
||||||
|
let hasSavedFeedsPref = false
|
||||||
const res = await this.rootStore.agent.app.bsky.actor.getPreferences({})
|
const res = await this.rootStore.agent.app.bsky.actor.getPreferences({})
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
for (const pref of res.data.preferences) {
|
for (const pref of res.data.preferences) {
|
||||||
|
@ -120,14 +123,41 @@ export class PreferencesModel {
|
||||||
) {
|
) {
|
||||||
this.savedFeeds = pref.saved
|
this.savedFeeds = pref.saved
|
||||||
this.pinnedFeeds = pref.pinned
|
this.pinnedFeeds = pref.pinned
|
||||||
|
hasSavedFeedsPref = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// set defaults on missing items
|
||||||
|
if (!hasSavedFeedsPref) {
|
||||||
|
const {saved, pinned} = await DEFAULT_FEEDS(
|
||||||
|
this.rootStore.agent.service.toString(),
|
||||||
|
(handle: string) =>
|
||||||
|
this.rootStore.agent
|
||||||
|
.resolveHandle({handle})
|
||||||
|
.then(({data}) => data.did),
|
||||||
|
)
|
||||||
|
runInAction(() => {
|
||||||
|
this.savedFeeds = saved
|
||||||
|
this.pinnedFeeds = pinned
|
||||||
|
})
|
||||||
|
res.data.preferences.push({
|
||||||
|
$type: 'app.bsky.actor.defs#savedFeedsPref',
|
||||||
|
saved,
|
||||||
|
pinned,
|
||||||
|
})
|
||||||
|
await this.rootStore.agent.app.bsky.actor.putPreferences({
|
||||||
|
preferences: res.data.preferences,
|
||||||
|
})
|
||||||
|
/* dont await */ this.rootStore.me.savedFeeds.refresh()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async update(cb: (prefs: AppBskyActorDefs.Preferences) => void) {
|
async update(cb: (prefs: AppBskyActorDefs.Preferences) => boolean | void) {
|
||||||
const res = await this.rootStore.agent.app.bsky.actor.getPreferences({})
|
const res = await this.rootStore.agent.app.bsky.actor.getPreferences({})
|
||||||
cb(res.data.preferences)
|
if (cb(res.data.preferences) === false) {
|
||||||
|
return
|
||||||
|
}
|
||||||
await this.rootStore.agent.app.bsky.actor.putPreferences({
|
await this.rootStore.agent.app.bsky.actor.putPreferences({
|
||||||
preferences: res.data.preferences,
|
preferences: res.data.preferences,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue