diff options
author | Ansh <anshnanda10@gmail.com> | 2023-06-23 10:48:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-23 12:48:52 -0500 |
commit | 08804f265e6ff8ec600295772baf8a72cbf5150d (patch) | |
tree | 1cacb5db38402483e637cb825aa5e308730804ff /src/lib/api/index.ts | |
parent | 9b19a95e638b2a5379560b5ffb27c423ad9a2e4e (diff) | |
download | voidsky-08804f265e6ff8ec600295772baf8a72cbf5150d.tar.zst |
[APP-690] better handling of post languages language filtering (#893)
* add SelectLangBtn * memoized objects that are created to reduce re-creation on re-render * add langs when uploading post * only send the top 3 languages otherwise backend will throw error * mv ContentLanguagesSettings to folder * add post languages settings modal and state * fix typos * modify feed manip to also check langs label on post * Fix tests * Remove log * Update feed-manip.ts * Fix syntax errors * UI tuneups * Show the currently selected languages in the composer * fix linting * Use a bcp-47 matching function * Fix a duplicate language issue * Fix web * Dont include lang in prompt * Make select language btn an observer * Keep device languages on top of language selection UIs * Fix android build settings * Enforce a max of 3 languages in posts * Fix tests * Fix types --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'src/lib/api/index.ts')
-rw-r--r-- | src/lib/api/index.ts | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts index 6235ca343..458ef7baa 100644 --- a/src/lib/api/index.ts +++ b/src/lib/api/index.ts @@ -65,6 +65,7 @@ interface PostOpts { images?: ImageModel[] knownHandles?: Set<string> onStateChange?: (state: string) => void + langs?: string[] } export async function post(store: RootStoreModel, opts: PostOpts) { @@ -96,6 +97,7 @@ export async function post(store: RootStoreModel, opts: PostOpts) { return true }) + // add quote embed if present if (opts.quote) { embed = { $type: 'app.bsky.embed.record', @@ -106,6 +108,7 @@ export async function post(store: RootStoreModel, opts: PostOpts) { } as AppBskyEmbedRecord.Main } + // add image embed if present if (opts.images?.length) { const images: AppBskyEmbedImages.Image[] = [] for (const image of opts.images) { @@ -136,6 +139,7 @@ export async function post(store: RootStoreModel, opts: PostOpts) { } } + // add external embed if present if (opts.extLink && !opts.images?.length) { if (opts.extLink.embed) { embed = opts.extLink.embed @@ -197,6 +201,7 @@ export async function post(store: RootStoreModel, opts: PostOpts) { } } + // add replyTo if post is a reply to another post if (opts.replyTo) { const replyToUrip = new AtUri(opts.replyTo) const parentPost = await store.agent.getPost({ @@ -215,6 +220,12 @@ export async function post(store: RootStoreModel, opts: PostOpts) { } } + // add top 3 languages from user preferences if langs is provided + let langs = opts.langs + if (opts.langs) { + langs = opts.langs.slice(0, 3) + } + try { opts.onStateChange?.('Posting...') return await store.agent.post({ @@ -222,6 +233,7 @@ export async function post(store: RootStoreModel, opts: PostOpts) { facets: rt.facets, reply, embed, + langs, }) } catch (e: any) { console.error(`Failed to create post: ${e.toString()}`) |