Files
openhuman/docs/src-tauri/02-commands.md
T
Steven Enamakel c46cf127e9 Update deep link scheme from outsourced:// to alphahuman:// for improved desktop authentication flow
- Changed all references of the deep link scheme in documentation and code to `alphahuman://` to align with the new branding.
- Updated the Telegram login flow documentation to reflect the new deep link handling.
- Adjusted various files to ensure consistency in the authentication process across platforms.

This update enhances the clarity and branding of the authentication flow for the desktop application.
2026-01-30 11:27:01 +05:30

6.0 KiB

Tauri Commands Reference

This document lists all Tauri commands available to the frontend.

Authentication Commands

exchange_token

Exchange a login token for a session token.

const result = await invoke("exchange_token", {
  backendUrl: "https://api.example.com",
  token: "login-token-from-deep-link",
});
// Returns: { sessionToken: string, user: User }

get_auth_state

Get current authentication state.

const state = await invoke<AuthState>("get_auth_state");
// Returns: { is_authenticated: boolean, user: User | null }

get_session_token

Get the current session token.

const token = await invoke<string | null>("get_session_token");

get_current_user

Get the current authenticated user.

const user = await invoke<User | null>("get_current_user");

is_authenticated

Check if user is authenticated.

const isAuth = await invoke<boolean>("is_authenticated");

logout

Clear session and disconnect socket.

await invoke("logout");

store_session

Manually store a session (usually called automatically by exchange_token).

await invoke("store_session", {
  token: "session-token",
  user: { id: "123", firstName: "John" },
});

Socket Commands

socket_connect

Request frontend to connect to socket server.

await invoke("socket_connect", {
  backendUrl: "https://api.example.com",
  token: "session-token",
});
// Emits "socket:should_connect" event

socket_disconnect

Request frontend to disconnect from socket server.

await invoke("socket_disconnect");
// Emits "socket:should_disconnect" event

get_socket_state

Get current socket state.

const state = await invoke<SocketState>("get_socket_state");
// Returns: { status: 'connected' | 'disconnected' | ..., socket_id: string | null, error: string | null }

is_socket_connected

Check if socket is connected.

const isConnected = await invoke<boolean>("is_socket_connected");

report_socket_connected

Report that socket connected (called by frontend).

await invoke("report_socket_connected", { socketId: "socket-id" });

report_socket_disconnected

Report that socket disconnected (called by frontend).

await invoke("report_socket_disconnected");

report_socket_error

Report socket error (called by frontend).

await invoke("report_socket_error", { error: "Connection failed" });

update_socket_status

Update socket status (called by frontend).

await invoke("update_socket_status", {
  status: "connected", // 'connected' | 'connecting' | 'disconnected' | 'reconnecting' | 'error'
  socketId: "socket-id",
});

Telegram Commands

start_telegram_login

Open Telegram login widget in browser.

await invoke("start_telegram_login");
// Opens ${DEFAULT_BACKEND_URL}/auth/telegram-widget?redirect=alphahuman://auth

start_telegram_login_with_url

Open Telegram login widget with custom backend URL.

await invoke("start_telegram_login_with_url", {
  backendUrl: "https://custom-backend.com",
});

Window Commands

show_window

Show and focus the main window.

await invoke("show_window");

hide_window

Hide the main window.

await invoke("hide_window");

toggle_window

Toggle window visibility.

await invoke("toggle_window");

is_window_visible

Check if window is visible.

const isVisible = await invoke<boolean>("is_window_visible");

minimize_window

Minimize the window.

await invoke("minimize_window");

maximize_window

Maximize or unmaximize the window.

await invoke("maximize_window");

close_window

Close the window (minimizes to tray on macOS).

await invoke("close_window");

set_window_title

Set the window title.

await invoke("set_window_title", { title: "New Title" });

Events (Rust → Frontend)

These events are emitted by Rust and can be listened to in the frontend:

Socket Events

Event Payload Description
socket:connected () Socket connected
socket:disconnected () Socket disconnected
socket:error string Socket error occurred
socket:message { event: string, data: any } Socket message received
socket:state_changed SocketState Socket state changed
socket:should_connect { backendUrl: string, token: string } Request to connect
socket:should_disconnect () Request to disconnect

Listening to Events

import { listen } from "@tauri-apps/api/event";

// Listen for socket connection request
await listen("socket:should_connect", (event) => {
  const { backendUrl, token } = event.payload;
  socketService.connect(backendUrl, token);
});

// Listen for state changes
await listen("socket:state_changed", (event) => {
  const state = event.payload as SocketState;
  dispatch(setSocketStatus(state.status));
});

Type Definitions

interface AuthState {
  is_authenticated: boolean;
  user: User | null;
}

interface User {
  id: string;
  firstName?: string;
  lastName?: string;
  username?: string;
  email?: string;
  telegramId?: string;
}

interface SocketState {
  status:
    | "connected"
    | "connecting"
    | "disconnected"
    | "reconnecting"
    | "error";
  socket_id: string | null;
  error?: string;
}

Previous: Architecture | Next: Services