Rename product to OrbitWard
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>OrbitalWard</title>
|
||||
<title>OrbitWard</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
Generated
+2
-2
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "orbitalward-frontend",
|
||||
"name": "orbitward-frontend",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "orbitalward-frontend",
|
||||
"name": "orbitward-frontend",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@vitejs/plugin-react": "^5.0.0",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "orbitalward-frontend",
|
||||
"name": "orbitward-frontend",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
|
||||
@@ -65,7 +65,7 @@ export function App() {
|
||||
}
|
||||
|
||||
if (auth.loading) {
|
||||
return <div className="flex min-h-screen items-center justify-center bg-[#090d13] text-sm text-slate-300">Loading OrbitalWard...</div>;
|
||||
return <div className="flex min-h-screen items-center justify-center bg-[#090d13] text-sm text-slate-300">Loading OrbitWard...</div>;
|
||||
}
|
||||
|
||||
if (!auth.user || !auth.token) {
|
||||
|
||||
@@ -49,7 +49,7 @@ export function Shell({ children, currentPage, onPageChange, onSignOut, user }:
|
||||
<Shield size={19} />
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-base font-semibold">OrbitalWard</div>
|
||||
<div className="text-base font-semibold">OrbitWard</div>
|
||||
<div className="text-xs text-slate-400">Monitoring appliance</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,10 +3,20 @@ import { useEffect, useMemo, useState } from "react";
|
||||
import { api, login } from "../api/client";
|
||||
import type { User } from "../types/api";
|
||||
|
||||
const TOKEN_KEY = "orbitalward_token";
|
||||
const TOKEN_KEY = "orbitward_token";
|
||||
const LEGACY_TOKEN_KEY = "orbitalward_token";
|
||||
|
||||
export function useAuth() {
|
||||
const [token, setToken] = useState<string | null>(() => localStorage.getItem(TOKEN_KEY));
|
||||
const [token, setToken] = useState<string | null>(() => {
|
||||
const currentToken = localStorage.getItem(TOKEN_KEY);
|
||||
if (currentToken) return currentToken;
|
||||
const legacyToken = localStorage.getItem(LEGACY_TOKEN_KEY);
|
||||
if (legacyToken) {
|
||||
localStorage.setItem(TOKEN_KEY, legacyToken);
|
||||
localStorage.removeItem(LEGACY_TOKEN_KEY);
|
||||
}
|
||||
return legacyToken;
|
||||
});
|
||||
const [user, setUser] = useState<User | null>(null);
|
||||
const [loading, setLoading] = useState(Boolean(token));
|
||||
|
||||
@@ -26,6 +36,7 @@ export function useAuth() {
|
||||
})
|
||||
.catch(() => {
|
||||
localStorage.removeItem(TOKEN_KEY);
|
||||
localStorage.removeItem(LEGACY_TOKEN_KEY);
|
||||
if (!cancelled) {
|
||||
setToken(null);
|
||||
setUser(null);
|
||||
@@ -52,6 +63,7 @@ export function useAuth() {
|
||||
},
|
||||
signOut: () => {
|
||||
localStorage.removeItem(TOKEN_KEY);
|
||||
localStorage.removeItem(LEGACY_TOKEN_KEY);
|
||||
setToken(null);
|
||||
setUser(null);
|
||||
},
|
||||
|
||||
@@ -33,7 +33,7 @@ export function LoginPage({ onLogin }: LoginPageProps) {
|
||||
<div className="flex h-10 w-10 items-center justify-center rounded-md bg-pulse text-slate-950">
|
||||
<Shield size={22} />
|
||||
</div>
|
||||
<div className="text-lg font-semibold">OrbitalWard</div>
|
||||
<div className="text-lg font-semibold">OrbitWard</div>
|
||||
</div>
|
||||
<div className="max-w-3xl pb-6">
|
||||
<h1 className="max-w-2xl text-4xl font-semibold leading-tight lg:text-6xl">
|
||||
|
||||
@@ -14,7 +14,7 @@ export function NotificationsPage({ token }: NotificationsPageProps) {
|
||||
const [name, setName] = useState("");
|
||||
const [channelType, setChannelType] = useState("generic_webhook");
|
||||
const [url, setUrl] = useState("");
|
||||
const [username, setUsername] = useState("OrbitalWard");
|
||||
const [username, setUsername] = useState("OrbitWard");
|
||||
const [enabled, setEnabled] = useState(true);
|
||||
const [editingChannelId, setEditingChannelId] = useState<number | null>(null);
|
||||
const [busyId, setBusyId] = useState<number | null>(null);
|
||||
@@ -38,7 +38,7 @@ export function NotificationsPage({ token }: NotificationsPageProps) {
|
||||
await api.updateNotificationChannel(token, editingChannelId, {
|
||||
name,
|
||||
channel_type: channelType,
|
||||
settings: { username: username.trim() || "OrbitalWard" },
|
||||
settings: { username: username.trim() || "OrbitWard" },
|
||||
secret: url.trim() ? url.trim() : undefined,
|
||||
is_enabled: enabled,
|
||||
});
|
||||
@@ -46,7 +46,7 @@ export function NotificationsPage({ token }: NotificationsPageProps) {
|
||||
await api.createNotificationChannel(token, {
|
||||
name,
|
||||
channel_type: channelType,
|
||||
settings: { username: username.trim() || "OrbitalWard" },
|
||||
settings: { username: username.trim() || "OrbitWard" },
|
||||
secret: url,
|
||||
is_enabled: enabled,
|
||||
});
|
||||
@@ -65,7 +65,7 @@ export function NotificationsPage({ token }: NotificationsPageProps) {
|
||||
setName(channel.name);
|
||||
setChannelType(channel.channel_type);
|
||||
setUrl("");
|
||||
setUsername(String(channel.settings.username || "OrbitalWard"));
|
||||
setUsername(String(channel.settings.username || "OrbitWard"));
|
||||
setEnabled(channel.is_enabled);
|
||||
setMessage(null);
|
||||
}
|
||||
@@ -75,7 +75,7 @@ export function NotificationsPage({ token }: NotificationsPageProps) {
|
||||
setName("");
|
||||
setChannelType("generic_webhook");
|
||||
setUrl("");
|
||||
setUsername("OrbitalWard");
|
||||
setUsername("OrbitWard");
|
||||
setEnabled(true);
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ export function NotificationsPage({ token }: NotificationsPageProps) {
|
||||
<div key={channel.id} className="grid gap-3 p-4 md:grid-cols-[1fr_140px_90px_260px] md:items-center">
|
||||
<div>
|
||||
<div className="font-medium">{channel.name}</div>
|
||||
<div className="text-sm text-slate-400">{String(channel.settings.username || "OrbitalWard")}</div>
|
||||
<div className="text-sm text-slate-400">{String(channel.settings.username || "OrbitWard")}</div>
|
||||
<div className="text-xs text-slate-500">{channel.has_secret ? "Secret stored" : "No secret"}</div>
|
||||
</div>
|
||||
<div className="text-sm text-slate-300">{channel.channel_type}</div>
|
||||
|
||||
Reference in New Issue
Block a user