From 4e5561283392d2ab1545cabb4455a8ffc490f86b Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 18 Oct 2019 17:20:27 -0700 Subject: Running prettier on code. - #305 , #309 --- ui/src/utils.ts | 190 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 114 insertions(+), 76 deletions(-) (limited to 'ui/src/utils.ts') diff --git a/ui/src/utils.ts b/ui/src/utils.ts index 350a8205..ce221e32 100644 --- a/ui/src/utils.ts +++ b/ui/src/utils.ts @@ -7,7 +7,14 @@ import 'moment/locale/sv'; import 'moment/locale/ru'; import 'moment/locale/nl'; -import { UserOperation, Comment, User, SortType, ListingType, SearchType } from './interfaces'; +import { + UserOperation, + Comment, + User, + SortType, + ListingType, + SearchType, +} from './interfaces'; import * as markdown_it from 'markdown-it'; import * as markdownitEmoji from 'markdown-it-emoji/light'; import * as markdown_it_container from 'markdown-it-container'; @@ -17,11 +24,16 @@ import * as emojiShortName from 'emoji-short-name'; export const repoUrl = 'https://github.com/dessalines/lemmy'; export const markdownHelpUrl = 'https://commonmark.org/help/'; -export const postRefetchSeconds: number = 60*1000; +export const postRefetchSeconds: number = 60 * 1000; export const fetchLimit: number = 20; export const mentionDropdownFetchLimit = 6; -export function randomStr() {return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(2, 10)} +export function randomStr() { + return Math.random() + .toString(36) + .replace(/[^a-z]+/g, '') + .substr(2, 10); +} export function msgOp(msg: any): UserOperation { let opStr: string = msg.op; @@ -31,27 +43,30 @@ export function msgOp(msg: any): UserOperation { export const md = new markdown_it({ html: false, linkify: true, - typographer: true -}).use(markdown_it_container, 'spoiler', { - validate: function(params: any) { - return params.trim().match(/^spoiler\s+(.*)$/); - }, - - render: function (tokens: any, idx: any) { - var m = tokens[idx].info.trim().match(/^spoiler\s+(.*)$/); - - if (tokens[idx].nesting === 1) { - // opening tag - return '
' + md.utils.escapeHtml(m[1]) + '\n'; - - } else { - // closing tag - return '
\n'; - } - } -}).use(markdownitEmoji, { - defs: objectFlip(emojiShortName) -}); + typographer: true, +}) + .use(markdown_it_container, 'spoiler', { + validate: function(params: any) { + return params.trim().match(/^spoiler\s+(.*)$/); + }, + + render: function(tokens: any, idx: any) { + var m = tokens[idx].info.trim().match(/^spoiler\s+(.*)$/); + + if (tokens[idx].nesting === 1) { + // opening tag + return ( + '
' + md.utils.escapeHtml(m[1]) + '\n' + ); + } else { + // closing tag + return '
\n'; + } + }, + }) + .use(markdownitEmoji, { + defs: objectFlip(emojiShortName), + }); md.renderer.rules.emoji = function(token, idx) { return twemoji.parse(token[idx].content); @@ -64,7 +79,9 @@ export function hotRank(comment: Comment): number { let now: Date = new Date(); let hoursElapsed: number = (now.getTime() - date.getTime()) / 36e5; - let rank = (10000 * Math.log10(Math.max(1, 3 + comment.score))) / Math.pow(hoursElapsed + 2, 1.8); + let rank = + (10000 * Math.log10(Math.max(1, 3 + comment.score))) / + Math.pow(hoursElapsed + 2, 1.8); // console.log(`Comment: ${comment.content}\nRank: ${rank}\nScore: ${comment.score}\nHours: ${hoursElapsed}`); @@ -72,26 +89,36 @@ export function hotRank(comment: Comment): number { } export function mdToHtml(text: string) { - return {__html: md.render(text)}; + return { __html: md.render(text) }; } -export function getUnixTime(text: string): number { - return text ? new Date(text).getTime()/1000 : undefined; +export function getUnixTime(text: string): number { + return text ? new Date(text).getTime() / 1000 : undefined; } -export function addTypeInfo(arr: Array, name: string): Array<{type_: string, data: T}> { - return arr.map(e => {return {type_: name, data: e}}); +export function addTypeInfo( + arr: Array, + name: string +): Array<{ type_: string; data: T }> { + return arr.map(e => { + return { type_: name, data: e }; + }); } -export function canMod(user: User, modIds: Array, creator_id: number, onSelf: boolean = false): boolean { +export function canMod( + user: User, + modIds: Array, + creator_id: number, + onSelf: boolean = false +): boolean { // You can do moderator actions only on the mods added after you. if (user) { let yourIndex = modIds.findIndex(id => id == user.id); if (yourIndex == -1) { return false; - } else { + } else { // onSelf +1 on mod actions not for yourself, IE ban, remove, etc - modIds = modIds.slice(0, yourIndex+(onSelf ? 0 : 1)); + modIds = modIds.slice(0, yourIndex + (onSelf ? 0 : 1)); return !modIds.includes(creator_id); } } else { @@ -103,8 +130,9 @@ export function isMod(modIds: Array, creator_id: number): boolean { return modIds.includes(creator_id); } - -var imageRegex = new RegExp(`(http)?s?:?(\/\/[^"']*\.(?:png|jpg|jpeg|gif|png|svg))`); +var imageRegex = new RegExp( + `(http)?s?:?(\/\/[^"']*\.(?:png|jpg|jpeg|gif|png|svg))` +); var videoRegex = new RegExp(`(http)?s?:?(\/\/[^"']*\.(?:mp4))`); export function isImage(url: string) { @@ -127,7 +155,6 @@ export function capitalizeFirstLetter(str: string): string { return str.charAt(0).toUpperCase() + str.slice(1); } - export function routeSortTypeToEnum(sort: string): SortType { if (sort == 'new') { return SortType.New; @@ -158,7 +185,11 @@ export async function getPageTitle(url: string) { return data; } -export function debounce(func: any, wait: number = 500, immediate: boolean = false) { +export function debounce( + func: any, + wait: number = 500, + immediate: boolean = false +) { // 'private' variable for instance // The returned function will be able to reference this due to closure. // Each call to the returned function will share this common timer. @@ -168,46 +199,45 @@ export function debounce(func: any, wait: number = 500, immediate: boolean = fal return function() { // reference the context and args for the setTimeout function var context = this, - args = arguments; - - // Should the function be called now? If immediate is true - // and not already in a timeout then the answer is: Yes - var callNow = immediate && !timeout; - - // This is the basic debounce behaviour where you can call this - // function several times, but it will only execute once - // [before or after imposing a delay]. - // Each time the returned function is called, the timer starts over. - clearTimeout(timeout); - - // Set the new timeout - timeout = setTimeout(function() { - - // Inside the timeout function, clear the timeout variable - // which will let the next execution run when in 'immediate' mode - timeout = null; - - // Check if the function already ran with the immediate flag - if (!immediate) { - // Call the original function with apply - // apply lets you define the 'this' object as well as the arguments - // (both captured before setTimeout) - func.apply(context, args); - } - }, wait); - - // Immediate mode and no wait timer? Execute the function.. - if (callNow) func.apply(context, args); - } + args = arguments; + + // Should the function be called now? If immediate is true + // and not already in a timeout then the answer is: Yes + var callNow = immediate && !timeout; + + // This is the basic debounce behaviour where you can call this + // function several times, but it will only execute once + // [before or after imposing a delay]. + // Each time the returned function is called, the timer starts over. + clearTimeout(timeout); + + // Set the new timeout + timeout = setTimeout(function() { + // Inside the timeout function, clear the timeout variable + // which will let the next execution run when in 'immediate' mode + timeout = null; + + // Check if the function already ran with the immediate flag + if (!immediate) { + // Call the original function with apply + // apply lets you define the 'this' object as well as the arguments + // (both captured before setTimeout) + func.apply(context, args); + } + }, wait); + + // Immediate mode and no wait timer? Execute the function.. + if (callNow) func.apply(context, args); + }; } export function getLanguage(): string { - return (navigator.language || navigator.userLanguage); + return navigator.language || navigator.userLanguage; } export function objectFlip(obj: any) { const ret = {}; - Object.keys(obj).forEach((key) => { + Object.keys(obj).forEach(key => { ret[obj[key]] = key; }); return ret; @@ -237,16 +267,24 @@ export function getMomentLanguage(): string { return lang; } -export const themes = ['litera', 'minty', 'solar', 'united', 'cyborg','darkly', 'journal', 'sketchy']; +export const themes = [ + 'litera', + 'minty', + 'solar', + 'united', + 'cyborg', + 'darkly', + 'journal', + 'sketchy', +]; export function setTheme(theme: string = 'darkly') { - for (var i=0; i < themes.length; i++) { - + for (var i = 0; i < themes.length; i++) { let styleSheet = document.getElementById(themes[i]); if (themes[i] == theme) { - styleSheet.removeAttribute("disabled"); + styleSheet.removeAttribute('disabled'); } else { - styleSheet.setAttribute("disabled", "disabled"); - } + styleSheet.setAttribute('disabled', 'disabled'); + } } } -- cgit v1.2.3 From a7dedaf273b6fd2ebd9c9b8b9d6a7d227f376797 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 20 Oct 2019 17:49:13 -0700 Subject: Externalize into sort-select component. - Fixes #311 --- ui/src/utils.ts | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ui/src/utils.ts') diff --git a/ui/src/utils.ts b/ui/src/utils.ts index ce221e32..867ff91e 100644 --- a/ui/src/utils.ts +++ b/ui/src/utils.ts @@ -166,6 +166,8 @@ export function routeSortTypeToEnum(sort: string): SortType { return SortType.TopWeek; } else if (sort == 'topmonth') { return SortType.TopMonth; + } else if (sort == 'topyear') { + return SortType.TopYear; } else if (sort == 'topall') { return SortType.TopAll; } -- cgit v1.2.3