Initial commit

This commit is contained in:
Samuel 2024-12-08 11:27:16 +01:00
commit 28ec24b2c2
26 changed files with 4372 additions and 0 deletions

32
src/pages/home.tsx Normal file
View file

@ -0,0 +1,32 @@
import { redirect, useNavigate, type RouteSectionProps } from "@solidjs/router";
import { type Component, type JSX } from "solid-js";
import { setDb, SQL } from "~/db";
export const Home: Component<RouteSectionProps> = () => {
const navigate = useNavigate();
const onFileChange: JSX.ChangeEventHandler<HTMLInputElement, Event> = (event) => {
const file = event.currentTarget.files![0];
const reader = new FileReader();
reader.addEventListener("load", () => {
const Uints = new Uint8Array(reader.result as ArrayBuffer);
setDb(new SQL.Database(Uints));
navigate("/overview");
});
reader.readAsArrayBuffer(file);
};
return (
<div>
<input
type="file"
accept=".sqlite"
onChange={onFileChange}
></input>
</div>
);
};
export default Home;

5
src/pages/index.tsx Normal file
View file

@ -0,0 +1,5 @@
import { lazy } from "solid-js";
export { Home } from "./home";
export const Overview = lazy(() => import("./overview"));

47
src/pages/overview.tsx Normal file
View file

@ -0,0 +1,47 @@
import type { RouteSectionProps } from "@solidjs/router";
import type { Component } from "solid-js";
import { overallSentMessagesStmt, roomOverviewStmt, SELF_ID, type RoomOverviewColumn } from "~/db";
type RoomOverview = {
recipientId: number;
active: boolean;
archived: boolean;
messageCount: number;
lastMessageDate: number;
title: string;
isGroup: boolean;
}[];
export const Overview: Component<RouteSectionProps> = () => {
const allSelfSentMessagesCount = overallSentMessagesStmt().getAsObject({
":recipient_id": SELF_ID,
});
const roomOverviewRaw: RoomOverviewColumn[] = [];
while (roomOverviewStmt().step()) {
roomOverviewRaw.push(roomOverviewStmt().getAsObject() as RoomOverviewColumn);
}
roomOverviewStmt().free();
const roomOverview: RoomOverview = roomOverviewRaw.map((column) => {
const isGroup = Boolean(column.title);
return {
recipientId: column.recipient_id,
active: Boolean(column.active),
archived: Boolean(column.archived),
messageCount: column.message_count,
lastMessageDate: column.last_message_date,
title: isGroup ? column.title! : (column.system_joined_name ?? column.profile_joined_name)!,
isGroup,
};
});
console.log(roomOverview);
return <p>All messages: {allSelfSentMessagesCount.message_count as number}</p>;
};
export default Overview;