Generate color hashes for comment authors
This commit is contained in:
parent
1f5889dc39
commit
ec5bb4a4a8
@ -9,10 +9,12 @@
|
|||||||
"typescript": "^5.0.0"
|
"typescript": "^5.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@types/color-hash": "^2.0.0",
|
||||||
"@types/imapflow": "^1.0.19",
|
"@types/imapflow": "^1.0.19",
|
||||||
"@types/jsdom": "^21.1.7",
|
"@types/jsdom": "^21.1.7",
|
||||||
"@types/mailparser": "^3.4.5",
|
"@types/mailparser": "^3.4.5",
|
||||||
"blakejs": "^1.2.1",
|
"blakejs": "^1.2.1",
|
||||||
|
"color-hash": "^2.0.2",
|
||||||
"imapflow": "^1.0.171",
|
"imapflow": "^1.0.171",
|
||||||
"isomorphic-dompurify": "^2.19.0",
|
"isomorphic-dompurify": "^2.19.0",
|
||||||
"jsdom": "^25.0.1",
|
"jsdom": "^25.0.1",
|
||||||
|
@ -7,6 +7,7 @@ import {config} from "../config.ts";
|
|||||||
import { marked } from "marked";
|
import { marked } from "marked";
|
||||||
import {sanitizeHtml} from "../mail/sanitize.ts";
|
import {sanitizeHtml} from "../mail/sanitize.ts";
|
||||||
import {formatThreadAddress} from "./id.ts";
|
import {formatThreadAddress} from "./id.ts";
|
||||||
|
import ColorHash from "color-hash";
|
||||||
|
|
||||||
export async function refreshThreadsEntirely(): Promise<void> {
|
export async function refreshThreadsEntirely(): Promise<void> {
|
||||||
await withClient(async client => {
|
await withClient(async client => {
|
||||||
@ -46,6 +47,7 @@ export async function refreshThreadsEntirely(): Promise<void> {
|
|||||||
// Pass 1: create all the ThreadComment instances and make a map by their ID
|
// Pass 1: create all the ThreadComment instances and make a map by their ID
|
||||||
const commentsByHash: {[hash: string]: ThreadComment} = {}
|
const commentsByHash: {[hash: string]: ThreadComment} = {}
|
||||||
const messages = messagesByThread[threadId]
|
const messages = messagesByThread[threadId]
|
||||||
|
const colorHash = new ColorHash();
|
||||||
for ( const message of messages ) {
|
for ( const message of messages ) {
|
||||||
if (
|
if (
|
||||||
!threadData.refresh.markers[message.mailbox]
|
!threadData.refresh.markers[message.mailbox]
|
||||||
@ -62,6 +64,7 @@ export async function refreshThreadsEntirely(): Promise<void> {
|
|||||||
name: message.from.name || '(anonymous)',
|
name: message.from.name || '(anonymous)',
|
||||||
mailId: sha256(message.from.address!.toLowerCase()),
|
mailId: sha256(message.from.address!.toLowerCase()),
|
||||||
domainId: sha256(message.from.address!.toLowerCase().split('@').reverse()[0]),
|
domainId: sha256(message.from.address!.toLowerCase().split('@').reverse()[0]),
|
||||||
|
color: colorHash.hex(message.from.address!.toLowerCase()),
|
||||||
},
|
},
|
||||||
date: message.date,
|
date: message.date,
|
||||||
subject: message.subject,
|
subject: message.subject,
|
||||||
|
@ -51,6 +51,7 @@ export type ThreadUser = {
|
|||||||
name: string,
|
name: string,
|
||||||
mailId: string,
|
mailId: string,
|
||||||
domainId: string,
|
domainId: string,
|
||||||
|
color: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ThreadComment = {
|
export type ThreadComment = {
|
||||||
|
Loading…
Reference in New Issue
Block a user