feat: Introduce multi-platform architecture for Electron and Web clients with shared UI components, Convex backend for messaging, and integrated search functionality.
Some checks failed
Build and Release / build-and-release (push) Has been cancelled

This commit is contained in:
Bryan1029384756
2026-02-16 13:08:39 -06:00
parent 8ff9213b34
commit ec12313996
49 changed files with 2449 additions and 3914 deletions

View File

@@ -6,6 +6,7 @@ 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 { SearchProvider } from '@discord-clone/shared/src/contexts/SearchContext';
import { UpdateProvider } from '@discord-clone/shared/src/components/UpdateBanner';
import TitleBar from '@discord-clone/shared/src/components/TitleBar';
import electronPlatform from './platform';
@@ -20,12 +21,14 @@ ReactDOM.createRoot(document.getElementById('root')).render(
<ThemeProvider>
<UpdateProvider>
<ConvexProvider client={convex}>
<VoiceProvider>
<TitleBar />
<HashRouter>
<App />
</HashRouter>
</VoiceProvider>
<SearchProvider>
<VoiceProvider>
<TitleBar />
<HashRouter>
<App />
</HashRouter>
</VoiceProvider>
</SearchProvider>
</ConvexProvider>
</UpdateProvider>
</ThemeProvider>

View File

@@ -2,6 +2,16 @@
* Electron platform implementation.
* Delegates to the window.* APIs exposed by preload.cjs.
*/
import SearchDatabase from '@discord-clone/shared/src/utils/SearchDatabase';
const searchDB = new SearchDatabase(
window.searchStorage,
{
encryptData: (data, key) => window.cryptoAPI.encryptData(data, key),
decryptData: (ct, key, iv, tag) => window.cryptoAPI.decryptData(ct, key, iv, tag),
}
);
const electronPlatform = {
crypto: {
generateKeys: () => window.cryptoAPI.generateKeys(),
@@ -46,10 +56,12 @@ const electronPlatform = {
updates: {
checkUpdate: () => window.updateAPI.checkFlatpakUpdate(),
},
searchDB,
features: {
hasWindowControls: true,
hasScreenCapture: true,
hasNativeUpdates: true,
hasSearch: true,
},
};