Files
remark42/frontend/app/store/thread/utils.ts
T
Pavel MineevandUmputun 51d2310c1f Nice inputs and buttons (#510)
* 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
2020-01-05 14:58:10 -06:00

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]));
};