]> Untitled Git - lemmy.git/blobdiff - ui/src/utils.ts
Adding emoji support.
[lemmy.git] / ui / src / utils.ts
index c48b00c690f1806e1131a538437c537ea5267edc..89be9e2bfb781c828a2f74a7e820c1815975906b 100644 (file)
@@ -1,5 +1,15 @@
+import 'moment/locale/es';
+import 'moment/locale/eo';
+import 'moment/locale/de';
+import 'moment/locale/zh-cn';
+import 'moment/locale/fr';
+import 'moment/locale/sv';
+import 'moment/locale/ru';
+import 'moment/locale/nl';
+
 import { UserOperation, Comment, User, SortType, ListingType } from './interfaces';
 import * as markdown_it from 'markdown-it';
+declare var markdownitEmoji: any;
 import * as markdown_it_container from 'markdown-it-container';
 
 export let repoUrl = 'https://github.com/dessalines/lemmy';
@@ -10,7 +20,7 @@ export function msgOp(msg: any): UserOperation {
 }
 
 var md = new markdown_it({
-  html: true,
+  html: false,
   linkify: true,
   typographer: true
 }).use(markdown_it_container, 'spoiler', {
@@ -30,7 +40,7 @@ var md = new markdown_it({
       return '</details>\n';
     }
   }
-});
+}).use(markdownitEmoji);
 
 export function hotRank(comment: Comment): number {
   // Rank = ScaleFactor * sign(Score) * log(1 + abs(Score)) / (Time + 2)^Gravity
@@ -84,6 +94,16 @@ export function isImage(url: string) {
   return imageRegex.test(url);
 }
 
+export function validURL(str: string) {
+  var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
+    '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
+    '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
+    '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
+    '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
+    '(\\#[-a-z\\d_]*)?$','i'); // fragment locator
+  return !!pattern.test(str);
+}
+
 export let fetchLimit: number = 20;
 
 export function capitalizeFirstLetter(str: string): string {
@@ -160,6 +180,30 @@ export function debounce(func: any, wait: number = 500, immediate: boolean = fal
   }
 }
 
-export function getLanguage() {
+export function getLanguage(): string {
   return (navigator.language || navigator.userLanguage);
 }
+
+export function getMomentLanguage(): string {
+  let lang = getLanguage();
+  if (lang.startsWith('zh')) {
+    lang = 'zh-cn';
+  } else if (lang.startsWith('sv')) {
+    lang = 'sv';
+  } else if (lang.startsWith('fr')) {
+    lang = 'fr';
+  } else if (lang.startsWith('de')) {
+    lang = 'de';
+  } else if (lang.startsWith('ru')) {
+    lang = 'ru';
+  } else if (lang.startsWith('es')) {
+    lang = 'es';
+  } else if (lang.startsWith('eo')) {
+    lang = 'eo';
+  } else if (lang.startsWith('nl')) {
+    lang = 'nl';
+  } else {
+    lang = 'en';
+  }
+  return lang;
+}