Switch completely to TypeScript, updated userColors

This commit is contained in:
Jaiwanth 2021-05-24 18:01:09 +05:30
parent e3b0d89ae9
commit 3147acec0c
4 changed files with 33 additions and 23 deletions

View file

@ -54,6 +54,7 @@
},
"dependencies": {
"@babel/runtime": "^7.12.5",
"@types/streamsaver": "^2.0.0",
"await-lock": "^2.1.0",
"blueimp-canvas-to-blob": "^3.28.0",
"browser-encrypt-attachment": "^0.3.0",

View file

@ -1,4 +1,3 @@
import streamSaver from "streamsaver";
import JSZip from "jszip";
import { decryptFile } from "../DecryptFile";
@ -237,16 +236,18 @@ div.mx_selected {
const userColors = [
"#64bf47",
"#4f9cd9",
"#9884e8",
"#fb6238",
"#00cdac",
"#ff5eaa",
"#368bd6",
"#ac3ba8",
"#03b381",
"#e64f7a",
"#ff812d",
"#2dc2c5",
"#5c56f5",
"#74d12c",
];
//Get a color associated with string length. This is to map userId to a specific color
const getUserColor = (userId: string) => {
const getUserNameColorClass = (userId: string) => {
return userColors[userId.length % userColors.length];
};
@ -256,7 +257,10 @@ const getUserPic = async (event: MatrixEvent) => {
if (!member.getMxcAvatarUrl()) {
return `
<div class="mx_pull_left mx_userpic_wrap">
<div class="mx_userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}">
<div
class="mx_userpic"
style="width: 42px;height: 42px;background-color: ${getUserNameColorClass(member.userId)}"
>
<div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}">
${event.sender.name[0]}
</div>
@ -369,7 +373,7 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f
${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)}
</div>
${!joined ? `
<div class="mx_from_name" style="color:${getUserColor(event.sender.name)}">
<div class="mx_from_name" style="color:${getUserNameColorClass(event.sender.name)}">
${event.sender.name}
</div>`: ``}
${isReply ?
@ -414,7 +418,7 @@ const createHTML = async (events: MatrixEvent[], room: Room) => {
};
const avatars = new Map();
let zip: any;
let zip: JSZip;
const exportAsHTML = async (res: MatrixEvent[], room: Room) => {
zip = new JSZip();
@ -432,7 +436,7 @@ const exportAsHTML = async (res: MatrixEvent[], room: Room) => {
const blob = await zip.generateAsync({ type: "blob" });
//Create a writable stream to the directory
const fileStream = streamSaver.createWriteStream(filename, blob.size);
const fileStream = streamSaver.createWriteStream(filename, { size: blob.size });
const writer = fileStream.getWriter();
// Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated.

View file

@ -1,19 +1,20 @@
import { MatrixClientPeg } from "../../MatrixClientPeg";
import { arrayFastClone } from "../arrays";
import { TimelineWindow } from "matrix-js-sdk/src/timeline-window";
import Room from 'matrix-js-sdk/src/models/room';
import exportAsHTML from "./HtmlExport";
export const exportFormats = Object.freeze({
"HTML": "HTML",
"JSON": "JSON",
"LOGS": "LOGS",
});
export enum exportFormats {
HTML = "HTML",
JSON = "JSON",
LOGS = "LOGS",
}
export const exportOptions = Object.freeze({
"TIMELINE": "TIMELINE",
});
export enum exportOptions {
TIMELINE = "TIMELINE",
}
const getTimelineConversation = (room) => {
const getTimelineConversation = (room: Room) => {
if (!room) return;
const cli = MatrixClientPeg.get();
@ -35,12 +36,11 @@ const getTimelineConversation = (room) => {
cli.decryptEventIfNeeded(event);
});
console.log(events);
return events;
};
const exportConversationalHistory = async (room, format, options) => {
const exportConversationalHistory = async (room: Room, format: string, options) => {
const res = getTimelineConversation(room);
switch (format) {
case exportFormats.HTML:

View file

@ -1655,6 +1655,11 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff"
integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==
"@types/streamsaver@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@types/streamsaver/-/streamsaver-2.0.0.tgz#2a6bdec0389f41a74c60091d37e84f8840d27ac9"
integrity sha512-TzUEZk30QmNaS6GAhcOnH/Cl2mO7HCFhQUr6GpzvuoFziFCxmvuyLftHW79agJpZvIrqti9jSiDHMgflUwbejg==
"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"