feat: Add new emoji assets and an UpdateBanner component.
Some checks failed
Build and Release / build-and-release (push) Failing after 3m28s

This commit is contained in:
Bryan1029384756
2026-02-13 12:20:40 -06:00
parent 63d4208933
commit fe869a3222
3855 changed files with 10226 additions and 15543 deletions

View File

@@ -0,0 +1,34 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import { HashRouter } from 'react-router-dom';
import { ConvexProvider, ConvexReactClient } from 'convex/react';
import { PlatformProvider } from '@discord-clone/shared/src/platform';
import App from '@discord-clone/shared/src/App';
import { ThemeProvider } from '@discord-clone/shared/src/contexts/ThemeContext';
import { VoiceProvider } from '@discord-clone/shared/src/contexts/VoiceContext';
import { UpdateProvider } from '@discord-clone/shared/src/components/UpdateBanner';
import TitleBar from '@discord-clone/shared/src/components/TitleBar';
import electronPlatform from './platform';
import '@discord-clone/shared/src/styles/themes.css';
import '@discord-clone/shared/src/index.css';
const convex = new ConvexReactClient(import.meta.env.VITE_CONVEX_URL);
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<PlatformProvider platform={electronPlatform}>
<ThemeProvider>
<UpdateProvider>
<ConvexProvider client={convex}>
<VoiceProvider>
<TitleBar />
<HashRouter>
<App />
</HashRouter>
</VoiceProvider>
</ConvexProvider>
</UpdateProvider>
</ThemeProvider>
</PlatformProvider>
</React.StrictMode>,
);

View File

@@ -0,0 +1,56 @@
/**
* Electron platform implementation.
* Delegates to the window.* APIs exposed by preload.cjs.
*/
const electronPlatform = {
crypto: {
generateKeys: () => window.cryptoAPI.generateKeys(),
randomBytes: (size) => window.cryptoAPI.randomBytes(size),
sha256: (data) => window.cryptoAPI.sha256(data),
signMessage: (privateKey, message) => window.cryptoAPI.signMessage(privateKey, message),
verifySignature: (publicKey, message, signature) => window.cryptoAPI.verifySignature(publicKey, message, signature),
deriveAuthKeys: (password, salt) => window.cryptoAPI.deriveAuthKeys(password, salt),
encryptData: (data, key) => window.cryptoAPI.encryptData(data, key),
decryptData: (encryptedData, key, iv, tag, options) => window.cryptoAPI.decryptData(encryptedData, key, iv, tag, options),
decryptBatch: (items) => window.cryptoAPI.decryptBatch(items),
verifyBatch: (items) => window.cryptoAPI.verifyBatch(items),
publicEncrypt: (publicKey, data) => window.cryptoAPI.publicEncrypt(publicKey, data),
privateDecrypt: (privateKey, encryptedHex) => window.cryptoAPI.privateDecrypt(privateKey, encryptedHex),
},
session: {
save: (data) => window.sessionPersistence.save(data),
load: () => window.sessionPersistence.load(),
clear: () => window.sessionPersistence.clear(),
},
settings: {
get: (key) => window.appSettings.get(key),
set: (key, value) => window.appSettings.set(key, value),
},
idle: {
getSystemIdleTime: () => window.idleAPI.getSystemIdleTime(),
onIdleStateChanged: (callback) => window.idleAPI.onIdleStateChanged(callback),
removeIdleStateListener: () => window.idleAPI.removeIdleStateListener(),
},
links: {
openExternal: (url) => window.cryptoAPI.openExternal(url),
fetchMetadata: (url) => window.cryptoAPI.fetchMetadata(url),
},
screenCapture: {
getScreenSources: () => window.cryptoAPI.getScreenSources(),
},
windowControls: {
minimize: () => window.windowControls.minimize(),
maximize: () => window.windowControls.maximize(),
close: () => window.windowControls.close(),
},
updates: {
checkUpdate: () => window.updateAPI.checkFlatpakUpdate(),
},
features: {
hasWindowControls: true,
hasScreenCapture: true,
hasNativeUpdates: true,
},
};
export default electronPlatform;