diff --git a/src/components/auth/SignUpScreen.tsx b/src/components/auth/SignUpScreen.tsx index c51fc09..43236ec 100644 --- a/src/components/auth/SignUpScreen.tsx +++ b/src/components/auth/SignUpScreen.tsx @@ -167,6 +167,11 @@ const SignUpScreen: Component = (props) => { an ed25519 keypair will be generated and stored locally on your device

+

+ your username will be stored on the relay server so others can + find you even when you're offline.{" "} + you can turn this off in settings. +

diff --git a/src/components/directory/UserDirectoryModal.tsx b/src/components/directory/UserDirectoryModal.tsx index f8cda4b..1fc51f0 100644 --- a/src/components/directory/UserDirectoryModal.tsx +++ b/src/components/directory/UserDirectoryModal.tsx @@ -16,6 +16,7 @@ import { Users, Copy, Check, + WifiOff, } from "lucide-solid"; import Avatar from "../common/Avatar"; import Button from "../common/Button"; @@ -263,7 +264,9 @@ const UserDirectoryModal: Component = (props) => {

{activeTab() === "friends" ? "add friends from the all peers tab" - : "peers will appear as you join communities"} + : searchQuery().trim().length > 0 + ? "try searching by peer id or check your relay connection" + : "peers will appear as you join communities or search by name"}

} @@ -283,6 +286,12 @@ const UserDirectoryModal: Component = (props) => { friend + + + + offline + +

diff --git a/src/components/settings/SettingsModal.tsx b/src/components/settings/SettingsModal.tsx index 5175b80..93ab275 100644 --- a/src/components/settings/SettingsModal.tsx +++ b/src/components/settings/SettingsModal.tsx @@ -21,11 +21,12 @@ import { toggleMessagePreview, toggleShowOnlineStatus, toggleAllowDMsFromAnyone, + toggleRelayDiscoverable, setMessageDisplay, setFontSize, } from "../../stores/settings"; import { identity, updateIdentity } from "../../stores/identity"; -import { updateProfile } from "../../lib/tauri"; +import { updateProfile, setRelayDiscoverable } from "../../lib/tauri"; import type { UserStatus } from "../../lib/types"; import Avatar from "../common/Avatar"; import Button from "../common/Button"; @@ -378,6 +379,19 @@ const PrivacySection: Component<{ checked={current().allow_dms_from_anyone} onChange={toggleAllowDMsFromAnyone} /> + { + toggleRelayDiscoverable(); + try { + await setRelayDiscoverable(!current().relay_discoverable); + } catch (e) { + console.error("failed to set relay discoverable:", e); + } + }} + /> {/* danger zone */}

diff --git a/src/lib/tauri.ts b/src/lib/tauri.ts index 24dfc1f..d8b1dca 100644 --- a/src/lib/tauri.ts +++ b/src/lib/tauri.ts @@ -296,6 +296,10 @@ export async function discoverGlobalPeers(): Promise { return invoke("discover_global_peers"); } +export async function setRelayDiscoverable(enabled: boolean): Promise { + return invoke("set_relay_discoverable", { enabled }); +} + export async function setRelayAddress(relayAddr: string): Promise { return invoke("set_relay_address", { relayAddr }); } diff --git a/src/stores/settings.ts b/src/stores/settings.ts index b7bbc26..b60c3ac 100644 --- a/src/stores/settings.ts +++ b/src/stores/settings.ts @@ -11,6 +11,7 @@ const defaultSettings: UserSettings = { enable_message_preview: true, show_online_status: true, allow_dms_from_anyone: true, + relay_discoverable: true, message_display: "cozy", font_size: "default", }; @@ -86,6 +87,13 @@ export function toggleAllowDMsFromAnyone() { })); } +export function toggleRelayDiscoverable() { + setSettings((prev) => ({ + ...prev, + relay_discoverable: !prev.relay_discoverable, + })); +} + export function setMessageDisplay(mode: "cozy" | "compact") { updateSettings({ message_display: mode }); }