- Wire phone, garage, and locker stores to the new storage layer - Add delete flows for messages and emails in the phone UI - Update contact, mail, and message views for the new data model
219 lines
9.7 KiB
Plaintext
219 lines
9.7 KiB
Plaintext
#include "script_component.hpp"
|
|
|
|
PREP_RECOMPILE_START;
|
|
#include "XEH_PREP.hpp"
|
|
PREP_RECOMPILE_END;
|
|
|
|
// private _category = [QUOTE(MOD_NAME), LLSTRING(displayName)];
|
|
|
|
if (isNil QGVAR(PhoneStore)) then { [] call FUNC(initPhoneStore); };
|
|
|
|
// Contact Management Events
|
|
[QGVAR(requestInitPhone), {
|
|
params [["_uid", "", [""]], ["_data", createHashMap, [createHashMap]]];
|
|
|
|
if (_uid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Empty UID provided to requestInitPhone"; };
|
|
|
|
GVAR(PhoneStore) call ["init", [_uid]];
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestAddContact), {
|
|
params [["_uid", "", [""]], ["_contactUid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _contactUid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Invalid parameters for requestAddContact"; };
|
|
|
|
private _result = GVAR(PhoneStore) call ["addContact", [_uid, _contactUid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseAddContact", [_result], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestAddContactByPhone), {
|
|
params [["_uid", "", [""]], ["_phoneNumber", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _phoneNumber isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Invalid parameters for requestAddContactByPhone"; };
|
|
|
|
private _result = GVAR(PhoneStore) call ["addContactByPhone", [_uid, _phoneNumber]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseAddContactByPhone", [_result, _phoneNumber], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestAddContactByEmail), {
|
|
params [["_uid", "", [""]], ["_email", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _email isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Invalid parameters for requestAddContactByEmail"; };
|
|
|
|
private _result = GVAR(PhoneStore) call ["addContactByEmail", [_uid, _email]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseAddContactByEmail", [_result, _email], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestRemoveContact), {
|
|
params [["_uid", "", [""]], ["_contactUid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _contactUid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Invalid parameters for requestRemoveContact"; };
|
|
|
|
private _result = GVAR(PhoneStore) call ["removeContact", [_uid, _contactUid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseRemoveContact", [_result, _contactUid], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestRefreshContacts), {
|
|
params [["_uid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Empty UID provided to requestRefreshContacts"; };
|
|
|
|
private _contacts = GVAR(PhoneStore) call ["refreshContacts", [_uid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseRefreshContacts", [_contacts], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestGetContacts), {
|
|
params [["_uid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Empty UID provided to requestGetContacts"; };
|
|
|
|
private _contactUids = GVAR(PhoneStore) call ["getContacts", [_uid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseGetContacts", [_contactUids], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
// Messaging Events
|
|
[QGVAR(requestSendMessage), {
|
|
params [["_fromUid", "", [""]], ["_toUid", "", [""]], ["_message", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_fromUid isEqualTo "" || _toUid isEqualTo "" || _message isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestSendMessage";
|
|
};
|
|
|
|
private _messageObj = GVAR(PhoneStore) call ["sendMessage", [_fromUid, _toUid, _message]];
|
|
private _success = _messageObj isEqualType createHashMap && { _messageObj isNotEqualTo createHashMap };
|
|
|
|
if (!isNull _player) then {
|
|
["forge_client_phone_responseSendMessage", [_success], _player] call CFUNC(targetEvent);
|
|
if (_success) then {
|
|
["forge_client_phone_responseMessageSent", [_messageObj], _player] call CFUNC(targetEvent);
|
|
};
|
|
};
|
|
|
|
private _recipient = [_toUid] call EFUNC(common,getPlayer);
|
|
if (_success && { _toUid isNotEqualTo _fromUid } && { !isNull _recipient }) then {
|
|
["forge_client_phone_responseMessageReceived", [_messageObj], _recipient] call CFUNC(targetEvent);
|
|
};
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestGetMessages), {
|
|
params [["_uid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Empty UID provided to requestGetMessages"; };
|
|
|
|
private _messages = GVAR(PhoneStore) call ["getMessages", [_uid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseGetMessages", [_messages], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestGetMessageThread), {
|
|
params [["_uid", "", [""]], ["_otherUid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _otherUid isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestGetMessageThread";
|
|
};
|
|
|
|
private _messages = GVAR(PhoneStore) call ["getMessageThread", [_uid, _otherUid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseGetMessageThread", [_messages, _otherUid], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestMarkMessageRead), {
|
|
params [["_uid", "", [""]], ["_messageId", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _messageId isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestMarkMessageRead";
|
|
};
|
|
|
|
private _result = GVAR(PhoneStore) call ["markMessageRead", [_uid, _messageId]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseMarkMessageRead", [_result, _messageId], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestDeleteMessage), {
|
|
params [["_uid", "", [""]], ["_messageId", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _messageId isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestDeleteMessage";
|
|
};
|
|
|
|
private _result = GVAR(PhoneStore) call ["deleteMessage", [_uid, _messageId]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseDeleteMessage", [_result, _messageId], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
// Email Events
|
|
[QGVAR(requestSendEmail), {
|
|
params [["_fromUid", "", [""]], ["_toUid", "", [""]], ["_subject", "", [""]], ["_body", "", [""]], ["_player", objNull, [objNull]]];
|
|
if (_subject isEqualTo "") then { _subject = "No subject"; };
|
|
|
|
if (_fromUid isEqualTo "" || _toUid isEqualTo "" || _body isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestSendEmail";
|
|
};
|
|
|
|
private _emailObj = GVAR(PhoneStore) call ["sendEmail", [_fromUid, _toUid, _subject, _body]];
|
|
private _success = _emailObj isEqualType createHashMap && { _emailObj isNotEqualTo createHashMap };
|
|
|
|
if (!isNull _player) then {
|
|
["forge_client_phone_responseSendEmail", [_success], _player] call CFUNC(targetEvent);
|
|
if (_success) then {
|
|
["forge_client_phone_responseEmailSent", [_emailObj], _player] call CFUNC(targetEvent);
|
|
};
|
|
};
|
|
|
|
private _recipient = [_toUid] call EFUNC(common,getPlayer);
|
|
if (_success && { _toUid isNotEqualTo _fromUid } && { !isNull _recipient }) then {
|
|
["forge_client_phone_responseEmailReceived", [_emailObj], _recipient] call CFUNC(targetEvent);
|
|
};
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestGetEmails), {
|
|
params [["_uid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Empty UID provided to requestGetEmails"; };
|
|
|
|
private _emails = GVAR(PhoneStore) call ["getEmails", [_uid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseGetEmails", [_emails], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestMarkEmailRead), {
|
|
params [["_uid", "", [""]], ["_emailId", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _emailId isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestMarkEmailRead";
|
|
};
|
|
|
|
private _result = GVAR(PhoneStore) call ["markEmailRead", [_uid, _emailId]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseMarkEmailRead", [_result, _emailId], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
[QGVAR(requestDeleteEmail), {
|
|
params [["_uid", "", [""]], ["_emailId", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "" || _emailId isEqualTo "") exitWith {
|
|
diag_log "[FORGE:Server:Phone] Invalid parameters for requestDeleteEmail";
|
|
};
|
|
|
|
private _result = GVAR(PhoneStore) call ["deleteEmail", [_uid, _emailId]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseDeleteEmail", [_result, _emailId], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|
|
|
|
// Cleanup Event
|
|
[QGVAR(requestRemovePhone), {
|
|
params [["_uid", "", [""]], ["_player", objNull, [objNull]]];
|
|
|
|
if (_uid isEqualTo "") exitWith { diag_log "[FORGE:Server:Phone] Empty UID provided to requestRemovePhone"; };
|
|
|
|
private _result = GVAR(PhoneStore) call ["remove", [_uid]];
|
|
|
|
if (!isNull _player) then { ["forge_client_phone_responseRemovePhone", [_result], _player] call CFUNC(targetEvent); };
|
|
}] call CFUNC(addEventHandler);
|