(feat): add cache for conversations and communities

(feat): conversations now get moved to the top when engaged with
(qol): update todo
This commit is contained in:
Alois 2026-05-01 16:40:16 +02:00
commit fd15215f15
14 changed files with 178 additions and 67 deletions

View file

@ -8,13 +8,13 @@ import { Select, SelectContent, SelectItem, SelectTrigger } from "@tensamin/ui";
import { displayCallId } from "@tensamin/call/utils";
import { useState } from "react";
import { SidebarTrigger, useSidebar } from "@tensamin/ui";
import { useTTP } from "@tensamin/ttp";
import { WindowControls as Controls } from "@tensamin/ui";
import { useSession } from "@tensamin/storage/session";
export default function Navbar({ forMobile }: { forMobile: boolean }) {
const navigate = useNavigate();
const callState = useCall((state) => state.state);
const { contacts } = useTTP();
const { contacts } = useSession();
const { pathname } = useLocation();

View file

@ -1,23 +1,18 @@
import * as React from "react";
import { useVirtualizer } from "@tanstack/react-virtual";
import { useTTP } from "@tensamin/ttp";
import Switch from "./switch";
import ConversationModal from "../modal/conversation";
import CommunityModal from "../modal/community";
import { Loader2 } from "lucide-react";
import { useSession } from "@tensamin/storage/session";
/**
* Executes List.
* @param none This function has no parameters.
* @returns unknown.
*/
export default function List() {
const [category, setCategory] = React.useState<
"conversations" | "communities"
>("conversations");
const { contacts, communities } = useTTP();
const { contacts, communities } = useSession();
const items = category === "conversations" ? contacts : communities;
const scrollRef = React.useRef<HTMLDivElement | null>(null);

View file

@ -22,7 +22,7 @@ import Login from "@/routes/screens/login";
import ChatContext from "@tensamin/chat/context";
import { useInitializeCall } from "@tensamin/call/store";
import { Provider as SocketContext } from "@tensamin/ttp";
import { Provider as TTPProvider } from "@tensamin/ttp";
import UserContext from "@tensamin/user/context";
import DeeplinkContext from "@tensamin/tauri/deeplinkHandler";
import NotificationsProvider from "@tensamin/notifications/context";
@ -35,6 +35,7 @@ import z from "zod";
import { useEffect, useState, type ReactNode } from "react";
import Storage from "@tensamin/storage/context";
import Session from "@tensamin/storage/session";
import Crypto from "@tensamin/crypto/context";
import Mobile from "@tensamin/tauri/context";
@ -141,20 +142,22 @@ function RootShell() {
function AppShell() {
return (
<SocketContext>
<UserContext>
<CallInit />
<TAuthWrapper>
<AppLayout>
<ChatContext>
<NotificationsProvider>
<Outlet />
</NotificationsProvider>
</ChatContext>
</AppLayout>
</TAuthWrapper>
</UserContext>
</SocketContext>
<TTPProvider>
<Session>
<UserContext>
<CallInit />
<TAuthWrapper>
<AppLayout>
<ChatContext>
<NotificationsProvider>
<Outlet />
</NotificationsProvider>
</ChatContext>
</AppLayout>
</TAuthWrapper>
</UserContext>
</Session>
</TTPProvider>
);
}