# Client Phone Usage Guide - forge-docus
The client phone addon provides the in-game phone UI for contacts, SMS messages, email, and local utility apps such as notes, calendar events, world clocks, and alarms.

Client Addons

# Client Phone Usage Guide

The client phone addon provides the in-game phone UI for contacts, SMS messages, email, and local utility apps such as notes, calendar events, world clocks, and alarms.

# Client Phone Usage Guide

The client phone addon provides the in-game phone UI for contacts, SMS messages, email, and local utility apps such as notes, calendar events, world clocks, and alarms.

## Open Phone UI

    call forge_client_phone_fnc_openUI;

The phone UI creates `RscPhone`, loads `ui/_site/index.html`, and routes browser alerts through `forge_client_phone_fnc_handleUIEvents`.

## State Ownership

Contacts, messages, and emails are server-owned and requested through the server phone addon.

Local utility app state is stored in `profileNamespace`:

- notes
- calendar events
- world clocks
- alarms
- theme/preferences

## Phone Class

`forge_client_phone_fnc_initClass` creates `GVAR(PhoneClass)`.

The phone class currently owns local notes, events, and settings helpers. Contacts, messages, and emails continue to use server-backed request/response events.

## Browser Events

### Session and Preferences

Event | Client behavior
--- | ---
`phone::get::player` | Send player UID to browser with `setPlayerUid`.
`phone::get::theme` | Send saved light/dark theme to browser.
`phone::set::theme` | Save theme preference to `profileNamespace`.

### Contacts

Event | Client behavior
--- | ---
`phone::get::contacts` | Load cached contacts and request server refresh.
`phone::refresh::contacts` | Request contacts from server.
`phone::add::contact` | Add contact by phone number.
`phone::add::contact::by::phone` | Add contact by phone number.
`phone::add::contact::by::email` | Add contact by email.
`phone::remove::contact` | Remove contact by UID.

### Messages

Event | Client behavior
--- | ---
`phone::get::messages` | Request messages from server.
`phone::get::message::thread` | Request thread with another UID.
`phone::send::message` | Send SMS through server.
`phone::mark::message::read` | Mark message read on server.
`phone::delete::message` | Delete message on server.

### Email

Event | Client behavior
--- | ---
`phone::get::emails` | Request emails from server.
`phone::send::email` | Send email through server.
`phone::mark::email::read` | Mark email read on server.
`phone::delete::email` | Delete email on server.

### Local Utility Apps

Event | Client behavior
--- | ---
`phone::get::notes` | Load local notes.
`phone::save::note` | Save local note.
`phone::delete::note` | Delete local note.
`phone::get::events` | Load local calendar events.
`phone::save::event` | Save local calendar event.
`phone::delete::event` | Delete local calendar event.
`phone::get::clocks` | Load local world clocks.
`phone::save::clock` | Save local world clock.
`phone::delete::clock` | Delete local world clock.
`phone::get::alarms` | Load local alarms.
`phone::save::alarm` | Save local alarm.
`phone::delete::alarm` | Delete local alarm.
`phone::toggle::alarm` | Toggle local alarm enabled state.

## Usage Rules

- Send contact, message, and email mutations to the server phone addon.
- Keep local-only utility apps in `profileNamespace` until they are migrated to server-backed storage.
- Do not treat local phone utility state as shared multiplayer state.
- Validate required UID, phone, email, subject, and message fields before sending server requests.

## Related Guides

- Phone Usage Guide
- Client Notifications Usage Guide

Edit this page or Report an issue

Client Main Usage Guide

The client main addon provides the shared mod identity, version metadata, CBA settings, and macro foundation used by the Forge client addons.

Client Store Usage Guide

The client store addon provides the storefront browser UI for catalog browsing, category hydration, payment source display, cart handling, and checkout requests.