Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
120
fork

Configure Feed

Select the types of activity you want to include in your feed.

at a876aae44ea07494ebea9727350aa060b81f317b 51 lines 1.5 kB view raw
1import {parse} from 'bcp-47' 2 3import {dedupArray} from '#/lib/functions' 4import {logger} from '#/logger' 5import {type Schema} from '#/state/persisted/schema' 6 7export function normalizeData(data: Schema) { 8 const next = {...data} 9 10 /** 11 * Normalize language prefs to ensure that these values only contain 2-letter 12 * country codes without region. 13 */ 14 try { 15 const langPrefs = {...next.languagePrefs} 16 langPrefs.primaryLanguage = normalizeLanguageTagToTwoLetterCode( 17 langPrefs.primaryLanguage, 18 ) 19 langPrefs.contentLanguages = dedupArray( 20 langPrefs.contentLanguages.map(lang => 21 normalizeLanguageTagToTwoLetterCode(lang), 22 ), 23 ) 24 langPrefs.postLanguage = langPrefs.postLanguage 25 .split(',') 26 .map(lang => normalizeLanguageTagToTwoLetterCode(lang)) 27 .filter(Boolean) 28 .join(',') 29 langPrefs.postLanguageHistory = dedupArray( 30 langPrefs.postLanguageHistory.map(postLanguage => { 31 return postLanguage 32 .split(',') 33 .map(lang => normalizeLanguageTagToTwoLetterCode(lang)) 34 .filter(Boolean) 35 .join(',') 36 }), 37 ) 38 next.languagePrefs = langPrefs 39 } catch (e: any) { 40 logger.error(`persisted state: failed to normalize language prefs`, { 41 safeMessage: e.message, 42 }) 43 } 44 45 return next 46} 47 48export function normalizeLanguageTagToTwoLetterCode(lang: string) { 49 const result = parse(lang).language 50 return result ?? lang 51}