minor updates and new providers
This commit is contained in:
60
app/App.tsx
60
app/App.tsx
@@ -21,6 +21,8 @@ import { SettingsProvider } from './providers/SettingsProvider/SettingsProvider'
|
|||||||
import { DialogListProvider } from './providers/DialogListProvider/DialogListProvider';
|
import { DialogListProvider } from './providers/DialogListProvider/DialogListProvider';
|
||||||
import { DialogStateProvider } from './providers/DialogStateProvider.tsx/DialogStateProvider';
|
import { DialogStateProvider } from './providers/DialogStateProvider.tsx/DialogStateProvider';
|
||||||
import { DeviceConfirm } from './views/DeviceConfirm/DeviceConfirm';
|
import { DeviceConfirm } from './views/DeviceConfirm/DeviceConfirm';
|
||||||
|
import { SystemAccountProvider } from './providers/SystemAccountsProvider/SystemAccountsProvider';
|
||||||
|
import { DeviceProvider } from './providers/DeviceProvider/DeviceProvider';
|
||||||
window.Buffer = Buffer;
|
window.Buffer = Buffer;
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
@@ -50,33 +52,37 @@ export default function App() {
|
|||||||
return (
|
return (
|
||||||
<InformationProvider>
|
<InformationProvider>
|
||||||
<DialogStateProvider>
|
<DialogStateProvider>
|
||||||
<DialogListProvider>
|
<DeviceProvider>
|
||||||
<BlacklistProvider>
|
<DialogListProvider>
|
||||||
<SettingsProvider>
|
<BlacklistProvider>
|
||||||
<Box h={'100%'}>
|
<SettingsProvider>
|
||||||
<Topbar></Topbar>
|
<SystemAccountProvider>
|
||||||
<Divider color={colors.borderColor}></Divider>
|
<Box h={'100%'}>
|
||||||
<ContextMenuProvider>
|
<Topbar></Topbar>
|
||||||
<ImageViwerProvider>
|
<Divider color={colors.borderColor}></Divider>
|
||||||
<AvatarProvider>
|
<ContextMenuProvider>
|
||||||
<Routes>
|
<ImageViwerProvider>
|
||||||
<Route path="/" element={
|
<AvatarProvider>
|
||||||
getViewByLoginState()
|
<Routes>
|
||||||
} />
|
<Route path="/" element={
|
||||||
<Route path="/create-seed" element={<CreateSeed />} />
|
getViewByLoginState()
|
||||||
<Route path="/confirm-seed" element={<ConfirmSeed />} />
|
} />
|
||||||
<Route path="/set-password" element={<SetPassword />} />
|
<Route path="/create-seed" element={<CreateSeed />} />
|
||||||
<Route path="/main/*" element={<Main />} />
|
<Route path="/confirm-seed" element={<ConfirmSeed />} />
|
||||||
<Route path="/exists-seed" element={<ExistsSeed />} />
|
<Route path="/set-password" element={<SetPassword />} />
|
||||||
<Route path="/deviceconfirm" element={<DeviceConfirm />} />
|
<Route path="/main/*" element={<Main />} />
|
||||||
</Routes>
|
<Route path="/exists-seed" element={<ExistsSeed />} />
|
||||||
</AvatarProvider>
|
<Route path="/deviceconfirm" element={<DeviceConfirm />} />
|
||||||
</ImageViwerProvider>
|
</Routes>
|
||||||
</ContextMenuProvider>
|
</AvatarProvider>
|
||||||
</Box>
|
</ImageViwerProvider>
|
||||||
</SettingsProvider>
|
</ContextMenuProvider>
|
||||||
</BlacklistProvider>
|
</Box>
|
||||||
</DialogListProvider>
|
</SystemAccountProvider>
|
||||||
|
</SettingsProvider>
|
||||||
|
</BlacklistProvider>
|
||||||
|
</DialogListProvider>
|
||||||
|
</DeviceProvider>
|
||||||
</DialogStateProvider>
|
</DialogStateProvider>
|
||||||
</InformationProvider>
|
</InformationProvider>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -206,7 +206,6 @@ export function DialogProvider(props: DialogProviderProps) {
|
|||||||
* Если сообщение не от меня и не групповое,
|
* Если сообщение не от меня и не групповое,
|
||||||
* расшифровываем ключ чачи своим приватным ключом
|
* расшифровываем ключ чачи своим приватным ключом
|
||||||
*/
|
*/
|
||||||
console.info("Decrypting chacha key for message");
|
|
||||||
decryptKey = Buffer.from(await decrypt(message.chacha_key, privatePlain), "binary").toString('utf-8');
|
decryptKey = Buffer.from(await decrypt(message.chacha_key, privatePlain), "binary").toString('utf-8');
|
||||||
}
|
}
|
||||||
finalMessages.push({
|
finalMessages.push({
|
||||||
@@ -222,6 +221,7 @@ export function DialogProvider(props: DialogProviderProps) {
|
|||||||
message_id: message.message_id,
|
message_id: message.message_id,
|
||||||
attachments: await loadAttachments(message.attachments)
|
attachments: await loadAttachments(message.attachments)
|
||||||
});
|
});
|
||||||
|
|
||||||
if(isMentioned(props.dialog)){
|
if(isMentioned(props.dialog)){
|
||||||
/**
|
/**
|
||||||
* Если мы были упомянуты в этом диалоге, то убираем упоминание,
|
* Если мы были упомянуты в этом диалоге, то убираем упоминание,
|
||||||
|
|||||||
@@ -125,6 +125,13 @@ export function InformationProvider(props: InformationProviderProps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const updateUserInformation = async (userInfo : UserInformation) => {
|
const updateUserInformation = async (userInfo : UserInformation) => {
|
||||||
|
if(systemAccounts.find((acc) => acc.publicKey == userInfo.publicKey)){
|
||||||
|
/**
|
||||||
|
* Данные системных аккаунтов не нужно кэшифровать, они уже
|
||||||
|
* прописаны в коде
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
const result = await getQuery("SELECT COUNT(*) as count FROM cached_users WHERE public_key = ?", [userInfo.publicKey]);
|
const result = await getQuery("SELECT COUNT(*) as count FROM cached_users WHERE public_key = ?", [userInfo.publicKey]);
|
||||||
if (result.count > 0) {
|
if (result.count > 0) {
|
||||||
await runQuery(`UPDATE cached_users SET title = ?, username = ?, verified = ? WHERE public_key = ?`, [userInfo.title, userInfo.username, userInfo.verified, userInfo.publicKey]);
|
await runQuery(`UPDATE cached_users SET title = ?, username = ?, verified = ? WHERE public_key = ?`, [userInfo.title, userInfo.username, userInfo.verified, userInfo.publicKey]);
|
||||||
|
|||||||
@@ -66,6 +66,12 @@ export function useUserInformation(publicKey: string) : [
|
|||||||
* Подписываемся на статус пользователя онлайн или не онлайн
|
* Подписываемся на статус пользователя онлайн или не онлайн
|
||||||
* если еще не подписаны
|
* если еще не подписаны
|
||||||
*/
|
*/
|
||||||
|
if(systemAccounts.find((acc) => acc.publicKey == publicKey)){
|
||||||
|
/**
|
||||||
|
* У системных аккаунтов не нужно подписыаться на онлайн статус
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(onlineSubscribes.indexOf(publicKey) !== -1
|
if(onlineSubscribes.indexOf(publicKey) !== -1
|
||||||
|| publicKey.indexOf("#group:") !== -1
|
|| publicKey.indexOf("#group:") !== -1
|
||||||
|| publicKey == ownPublicKey
|
|| publicKey == ownPublicKey
|
||||||
@@ -81,12 +87,19 @@ export function useUserInformation(publicKey: string) : [
|
|||||||
subscribePacket.addPublicKey(publicKey);
|
subscribePacket.addPublicKey(publicKey);
|
||||||
send(subscribePacket);
|
send(subscribePacket);
|
||||||
setOnlineSubscribes((prev) => [...prev, publicKey]);
|
setOnlineSubscribes((prev) => [...prev, publicKey]);
|
||||||
}, [blocked]);
|
}, [blocked, publicKey]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if(user || publicKey.trim() == ''){
|
if(user || publicKey.trim() == ''){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(systemAccounts.find((acc) => acc.publicKey == publicKey)){
|
||||||
|
/**
|
||||||
|
* System account has no updates, its hardcoded display
|
||||||
|
* name and user name
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
let packetSearch = new PacketSearch();
|
let packetSearch = new PacketSearch();
|
||||||
packetSearch.setSearch(publicKey);
|
packetSearch.setSearch(publicKey);
|
||||||
@@ -119,14 +132,23 @@ export function useUserInformation(publicKey: string) : [
|
|||||||
}
|
}
|
||||||
}, [publicKey, privateKey]);
|
}, [publicKey, privateKey]);
|
||||||
|
|
||||||
|
let userInfo = user ? user : {
|
||||||
|
title: "DELETED",
|
||||||
|
username: "",
|
||||||
|
publicKey: "",
|
||||||
|
online: OnlineState.OFFLINE,
|
||||||
|
verified: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
if(systemAccounts.find((acc) => acc.publicKey == publicKey)){
|
||||||
|
/**
|
||||||
|
* Это системный аккаунт, возвращаем его информацию
|
||||||
|
*/
|
||||||
|
userInfo = systemAccounts.find((acc) => acc.publicKey == publicKey)!;
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
userInfo, updateUserInformation, forceUpdateUserInformation, loading
|
||||||
title: user ? user.title : "DELETED",
|
|
||||||
username: user ? user.username : "",
|
|
||||||
publicKey: user ? user.publicKey : "",
|
|
||||||
online: user ? user.online : OnlineState.OFFLINE,
|
|
||||||
verified: user ? user.verified : 0
|
|
||||||
}, updateUserInformation, forceUpdateUserInformation, loading
|
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -9,30 +9,29 @@ import { AccountProvder } from './providers/AccountProvider/AccountProvider';
|
|||||||
import { DatabaseProvider } from './providers/DatabaseProvider/DatabaseProvider';
|
import { DatabaseProvider } from './providers/DatabaseProvider/DatabaseProvider';
|
||||||
import { ProtocolProvider } from './providers/ProtocolProvider/ProtocolProvider';
|
import { ProtocolProvider } from './providers/ProtocolProvider/ProtocolProvider';
|
||||||
import { selectServer } from './servers';
|
import { selectServer } from './servers';
|
||||||
import { DeviceProvider } from './providers/DeviceProvider/DeviceProvider';
|
|
||||||
import { HashRouter } from 'react-router-dom';
|
import { HashRouter } from 'react-router-dom';
|
||||||
|
import { SystemProvider } from './providers/SystemProvider/SystemProvider';
|
||||||
|
|
||||||
const theme = createTheme({
|
const theme = createTheme({
|
||||||
defaultRadius: 8
|
defaultRadius: 8
|
||||||
});
|
});
|
||||||
|
|
||||||
createRoot(document.getElementById('app') as HTMLElement).render(
|
createRoot(document.getElementById('app') as HTMLElement).render(
|
||||||
<MantineProvider theme={theme} defaultColorScheme='auto'>
|
<MantineProvider theme={theme} defaultColorScheme='auto'>
|
||||||
<DatabaseProvider>
|
<DatabaseProvider>
|
||||||
<AccountProvder>
|
<AccountProvder>
|
||||||
<ModalsProvider>
|
<ModalsProvider>
|
||||||
<MemoryProvider>
|
<MemoryProvider>
|
||||||
<DeviceProvider>
|
<HashRouter>
|
||||||
<HashRouter>
|
<SystemProvider>
|
||||||
<ProtocolProvider serverAddress={selectServer()}>
|
<ProtocolProvider serverAddress={selectServer()}>
|
||||||
<App />
|
<App />
|
||||||
</ProtocolProvider>
|
</ProtocolProvider>
|
||||||
</HashRouter>
|
</SystemProvider>
|
||||||
</DeviceProvider>
|
</HashRouter>
|
||||||
</MemoryProvider>
|
</MemoryProvider>
|
||||||
</ModalsProvider>
|
</ModalsProvider>
|
||||||
</AccountProvder>
|
</AccountProvder>
|
||||||
</DatabaseProvider>
|
</DatabaseProvider>
|
||||||
</MantineProvider>
|
</MantineProvider>
|
||||||
)
|
)
|
||||||
|
|
||||||
Reference in New Issue
Block a user