One-click backups for AT Protocol
at main 88 lines 2.8 kB view raw
1import { useState } from "react"; 2import { Button } from "@/components/ui/button"; 3import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; 4import { invoke } from "@tauri-apps/api/core"; 5import { listen } from "@tauri-apps/api/event"; 6import { toast } from "sonner"; 7 8export function BackgroundTest() { 9 const [isListening, setIsListening] = useState(false); 10 11 const startListening = async () => { 12 try { 13 await listen("perform-backup", () => { 14 toast("🎯 Background backup event received!"); 15 console.log("Background backup event received"); 16 }); 17 setIsListening(true); 18 toast("🎯 Listening for background backup events"); 19 } catch (error) { 20 console.error("Failed to start listening:", error); 21 toast("Failed to start listening"); 22 } 23 }; 24 25 const testBackgroundScheduler = async () => { 26 try { 27 await invoke("start_background_scheduler"); 28 toast("🎯 Background scheduler started"); 29 } catch (error) { 30 console.error("Failed to start background scheduler:", error); 31 toast("Failed to start background scheduler"); 32 } 33 }; 34 35 const testEmitEvent = async () => { 36 try { 37 // This will trigger the background backup 38 await invoke("emit", { event: "perform-backup", payload: null }); 39 toast("🎯 Test backup event emitted"); 40 } catch (error) { 41 console.error("Failed to emit event:", error); 42 toast("Failed to emit event"); 43 } 44 }; 45 46 return ( 47 <Card className="bg-card border-white/10 mb-4"> 48 <CardHeader> 49 <CardTitle className="text-white">🎯 Background Backup Test</CardTitle> 50 </CardHeader> 51 <CardContent className="space-y-4"> 52 <div className="flex gap-2"> 53 <Button 54 onClick={startListening} 55 disabled={isListening} 56 variant="outline" 57 className="cursor-pointer" 58 > 59 {isListening ? "Listening..." : "Start Listening"} 60 </Button> 61 62 <Button 63 onClick={testBackgroundScheduler} 64 variant="outline" 65 className="cursor-pointer" 66 > 67 Start Scheduler 68 </Button> 69 70 <Button 71 onClick={testEmitEvent} 72 variant="outline" 73 className="cursor-pointer" 74 > 75 Test Event 76 </Button> 77 </div> 78 79 <div className="text-xs text-white/60"> 80 <p> Click "Start Listening" to listen for backup events</p> 81 <p> Click "Start Scheduler" to start background scheduler</p> 82 <p> Click "Test Event" to manually trigger a backup event</p> 83 <p> Check browser console for detailed logs</p> 84 </div> 85 </CardContent> 86 </Card> 87 ); 88}