diff --git a/src/webpage/i18n.ts b/src/webpage/i18n.ts index 160649b..1b706c6 100644 --- a/src/webpage/i18n.ts +++ b/src/webpage/i18n.ts @@ -119,13 +119,12 @@ class I18n { static options() { return [...langmap.keys()].map((e) => e.replace(".json", "")); } - static setLanguage(lang: string) { + static async setLanguage(lang: string) { if (this.options().indexOf(lang) !== -1) { - getPreferences().then(async (prefs) => { - prefs.locale = lang; - await I18n.create(lang); - await setPreferences(prefs); - }); + const prefs = getPreferences(); + prefs.locale = lang; + await I18n.create(lang); + await setPreferences(prefs); } } } @@ -134,7 +133,7 @@ let userLocale = navigator.language.slice(0, 2) || "en"; if (I18n.options().indexOf(userLocale) === -1) { userLocale = "en"; } -const prefs = await getPreferences(); +const prefs = getPreferences(); const storage = prefs.locale; if (storage) { userLocale = storage; diff --git a/src/webpage/localuser.ts b/src/webpage/localuser.ts index f0b6a28..4384e75 100644 --- a/src/webpage/localuser.ts +++ b/src/webpage/localuser.ts @@ -337,7 +337,7 @@ class Localuser { } async queryBlog() { this.perminfo.localuser ??= {}; - const prefs = await getPreferences(); + const prefs = getPreferences(); const bstate = prefs.showBlogUpdates; if (bstate === undefined) { const pop = new Dialog(""); @@ -461,7 +461,7 @@ class Localuser { } this.pingEndpoint(); - const prefs = await getPreferences(); + const prefs = getPreferences(); const ml = document.getElementById("memberlisttoggle")!; if (prefs.checkMemberList) { ml.classList = ""; @@ -2483,7 +2483,6 @@ class Localuser { async getPosts() { const text = await (await fetch("https://blog.fermi.chat/feed_rss_created.xml")).text(); const xml = new DOMParser().parseFromString(text, "text/xml"); - console.log(xml, text); const posts = Array.from(xml.getElementsByTagName("channel")[0].getElementsByTagName("item")); return { items: posts.map((post) => { @@ -2531,7 +2530,7 @@ class Localuser { this.figureDefaultProvidor(); } async figureDefaultProvidor() { - const prefs = await getPreferences(); + const prefs = getPreferences(); this.selectedGifProfidor = this.gifProvideors.find((_) => _.api_name == prefs.gifProvidor) || this.gifProvideors[0]; } @@ -2583,7 +2582,7 @@ class Localuser { }); } async showusersettings() { - const prefs = await getPreferences(); + const prefs = getPreferences(); const localSettings = getLocalSettings(); const settings = new Settings(I18n.localuser.settings()); { @@ -3014,7 +3013,7 @@ class Localuser { } { - const prefs = await getPreferences(); + const prefs = getPreferences(); const tas = settings.addButton(I18n.localuser.themesAndSounds(), {contained: true}); { const themes = ["Dark", "WHITE", "Light", "Dark-Accent"]; @@ -3145,6 +3144,18 @@ class Localuser { {defaultIndex: ind === -1 ? 0 : ind}, ); } + { + tas.addCheckboxInput( + "Show today at:", + (b) => { + prefs.showToday = b; + setPreferences(prefs); + }, + { + initState: prefs.showToday, + }, + ); + } } { const blog = settings.addButton(I18n.blog.blog(), {contained: true}); @@ -5236,7 +5247,7 @@ class Localuser { readonly presences: Map = new Map(); static font?: FontFace; static async loadFont() { - const prefs = await getPreferences(); + const prefs = getPreferences(); const fontName = prefs.emojiFont; if (this.font) { diff --git a/src/webpage/message.ts b/src/webpage/message.ts index ba4c753..ec4974e 100644 --- a/src/webpage/message.ts +++ b/src/webpage/message.ts @@ -27,6 +27,7 @@ import {Components} from "./interactions/compontents.js"; import {ImagesDisplay} from "./disimg"; import {ReportMenu} from "./reporting/report.js"; import {getDeveloperSettings} from "./utils/storage/devSettings.js"; +import {getPreferences} from "./utils/storage/userPreferences.js"; class Message extends SnowFlake { static contextmenu = new Contextmenu("message menu"); stickers!: Sticker[]; @@ -1773,13 +1774,14 @@ let now: string; let yesterdayStr: string; function formatTime(date: Date) { + const conf = getPreferences(); updateTimes(); const datestring = date.toLocaleDateString(); const formatTime = (date: Date) => date.toLocaleTimeString([], {hour: "2-digit", minute: "2-digit"}); if (datestring === now) { - return I18n.todayAt(formatTime(date)); + return conf.showToday ? I18n.todayAt(formatTime(date)) : formatTime(date); } else if (datestring === yesterdayStr) { return I18n.yesterdayAt(formatTime(date)); } else { diff --git a/src/webpage/utils/storage/userPreferences.ts b/src/webpage/utils/storage/userPreferences.ts index dcf5182..6373e56 100644 --- a/src/webpage/utils/storage/userPreferences.ts +++ b/src/webpage/utils/storage/userPreferences.ts @@ -36,13 +36,14 @@ export class UserPreferences { emojiFont?: string; checkMemberList = false; gifProvidor?: string; + showToday = true; constructor(init?: Partial) { Object.assign(this, init); } } -export async function getPreferences(): Promise { +export function getPreferences(): UserPreferences { return new UserPreferences(JSON.parse(localStorage.getItem("userPreferences") || "{}")); } diff --git a/src/webpage/utils/utils.ts b/src/webpage/utils/utils.ts index ffb35ca..837b4e7 100644 --- a/src/webpage/utils/utils.ts +++ b/src/webpage/utils/utils.ts @@ -32,7 +32,7 @@ let instances: | null = null; await setTheme(); export async function setTheme(theme?: string) { - const prefs = await getPreferences(); + const prefs = getPreferences(); document.body.className = (theme || prefs.theme) + "-theme"; console.log(theme); } @@ -87,9 +87,9 @@ export function setDefaults() { userinfos.accent_color = "#3096f7"; } - getPreferences().then((perfs) => - document.documentElement.style.setProperty("--accent-color", perfs.accentColor), - ); + const perfs = getPreferences(); + document.documentElement.style.setProperty("--accent-color", perfs.accentColor); + if (userinfos.preferences === undefined) { userinfos.preferences = { theme: "Dark", @@ -749,14 +749,12 @@ export function createImg( elm: HTMLElement | void, type: "gif" | "icon" = "gif", ): safeImg { - const aniOpt = getPreferences().then((prefs) => { - return ( - (type === "gif" ? prefs.animateGifs : prefs.animateIcons) || - ("hover" as "hover") || - "always" || - "never" - ); - }); + const prefs = getPreferences(); + const aniOpt = + (type === "gif" ? prefs.animateGifs : prefs.animateIcons) || + ("hover" as "hover") || + "always" || + "never"; const img = document.createElement("img"); img.loading = "lazy"; img.decoding = "async"; @@ -769,11 +767,11 @@ export function createImg( if (animated) { img.crossOrigin = "anonymous"; } - img.src = (await aniOpt) !== "always" ? staticsrc || src || "" : src || ""; + img.src = aniOpt !== "always" ? staticsrc || src || "" : src || ""; }); } img.onload = async () => { - if ((await aniOpt) === "always") return; + if (aniOpt === "always") return; if (!src) return; if ((await isAnimated(src)) && !staticsrc) { let s = staticImgMap.get(src); @@ -797,13 +795,13 @@ export function createImg( } }; elm.addEventListener("mouseover", async () => { - if ((await aniOpt) === "never") return; + if (aniOpt === "never") return; if (img.src !== src && src) { img.src = src; } }); elm.addEventListener("mouseleave", async () => { - if (staticsrc && (await aniOpt) !== "always") { + if (staticsrc && aniOpt !== "always") { img.src = staticsrc; } }); @@ -817,7 +815,7 @@ export function createImg( if (animated) { img.crossOrigin = "anonymous"; } - img.src = (await aniOpt) !== "always" ? staticsrc || src || "" : src || ""; + img.src = aniOpt !== "always" ? staticsrc || src || "" : src || ""; }); } },