109 lines
3.4 KiB
Markdown
109 lines
3.4 KiB
Markdown
# 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
|
|
|
|
```sqf
|
|
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 Repository
|
|
|
|
`forge_client_phone_fnc_initRepository` creates `GVAR(PhoneRepository)`.
|
|
|
|
The phone repository owns local notes, events, clocks, alarms, 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](./PHONE_USAGE_GUIDE.md)
|
|
- [Client Notifications Usage Guide](./CLIENT_NOTIFICATIONS_USAGE_GUIDE.md)
|