* Set default font in examle * prettify file * add ui elements * Use UIButton at AuthPanel * sort deps * remove unsed getUserTitle method * move UserId inside AuthPanel * tests * use UIButton and UInput in Anonymous login * Use UIButton and UIInput in email login * Replace Button to UIButton * fix context for onTitleClick in dropdown * rearrage class props in dropdown * TODO: change finding over DOM to using ref * Use UIButton in input * rearrage deps * Use UIButton in comment * test * Focus and Input buttons * custom focus style for inputs and buttons * the same focus style for comment input * align buttons by top line in input * Token dropdown & hover fix * disable hover when button disabled * make token dropdown markup in new style * Fix trailing comma * update prettier * move prettier config to json format because it is more hendy for settings (for example vscode can suggest rules) * prettier fixed trailing comman in ejs * Remove unnecessary conditions * Files was formatted by Prettier * fix cursor pointer on collapse button * Move components and right naming * ui-button -> button * ui-input -> input * input -> comment-form * Change cursor behavior on disabled state * Change button style * font-weight: normal by default * add small border-radius * Change another one button to component * Fix autofocus on username in email login form * use preact inbuild autoFocus * fix autofocus on back from token step * sleep for 0s enough to wait next render before focus * use more specific name for username input * fix line-height at auth line on mobile * fix className
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { siteId, url } from '@app/common/settings';
|
|
import { LS_COLLAPSE_KEY } from '@app/common/constants';
|
|
import { setItem as localStorageSetItem, getItem as localStorageGetItem } from '@app/common/local-storage';
|
|
import { Comment } from '@app/common/types';
|
|
|
|
function getFromLocalStorage(): string[] {
|
|
return JSON.parse(localStorageGetItem(LS_COLLAPSE_KEY) || '[]');
|
|
}
|
|
|
|
/**
|
|
* returns list of serialized comments of type "site-id_url_comment-id"
|
|
*/
|
|
export const getCollapsedComments = (): string[] =>
|
|
getFromLocalStorage().reduce((acc: string[], v: string) => {
|
|
const components = v.split('_');
|
|
if (components[0] === siteId && components[1] === url) {
|
|
acc.push(components[2]);
|
|
}
|
|
return acc;
|
|
}, []);
|
|
|
|
/**
|
|
* @param info list of string of type "site-id_url_comment-id
|
|
*/
|
|
export const saveCollapsedComments = (siteId: string, url: string, info: Comment['id'][]): void => {
|
|
const data = info.map(i => `${siteId}_${url}_${i}`);
|
|
const notForThisPost = getFromLocalStorage().filter(entry => entry.indexOf(`${siteId}_${url}`) === -1);
|
|
const all = new Set([...notForThisPost, ...data]);
|
|
localStorageSetItem(LS_COLLAPSE_KEY, JSON.stringify([...all]));
|
|
};
|