This commit is contained in:
otsmr 2025-11-04 23:25:17 +01:00
parent 94f60b5806
commit 07d36c133c
21 changed files with 565 additions and 390 deletions

View file

@ -37,7 +37,7 @@ class GroupsDao extends DatabaseAccessor<TwonlyDB> with _$GroupsDaoMixin {
.write(updates);
}
Future<List<GroupMember>> getGroupMembers(String groupId) async {
Future<List<GroupMember>> getGroupNonLeftMembers(String groupId) async {
return (select(groupMembers)
..where(
(t) =>
@ -47,6 +47,11 @@ class GroupsDao extends DatabaseAccessor<TwonlyDB> with _$GroupsDaoMixin {
.get();
}
Future<List<GroupMember>> getAllGroupMembers(String groupId) async {
return (select(groupMembers)..where((t) => t.groupId.equals(groupId)))
.get();
}
Future<GroupMember?> getGroupMemberByPublicKey(Uint8List publicKey) async {
return (select(groupMembers)
..where((t) => t.groupPublicKey.equals(publicKey)))

View file

@ -310,7 +310,8 @@ class MessagesDao extends DatabaseAccessor<TwonlyDB> with _$MessagesDaoMixin {
final message =
await twonlyDB.messagesDao.getMessageById(messageId).getSingleOrNull();
if (message == null) return true;
final members = await twonlyDB.groupsDao.getGroupMembers(message.groupId);
final members =
await twonlyDB.groupsDao.getGroupNonLeftMembers(message.groupId);
final actions = await (select(messageActions)
..where(

View file

@ -375,7 +375,7 @@
"@errorInternalError": {},
"errorInvalidInvitationCode": "Der von dir angegebene Einladungscode ist ungültig. Bitte überprüfe den Code und versuche es erneut.",
"@errorInvalidInvitationCode": {},
"errorUsernameAlreadyTaken": "Der Benutzername, den du verwenden möchtest, ist bereits vergeben. Bitte wähle einen anderen Benutzernamen.",
"errorUsernameAlreadyTaken": "Der Benutzername ist bereits vergeben.",
"@errorUsernameAlreadyTaken": {},
"errorSignatureNotValid": "Die bereitgestellte Signatur ist nicht gültig. Bitte überprüfe deine Anmeldeinformationen und versuche es erneut.",
"@errorSignatureNotValid": {},

View file

@ -346,7 +346,7 @@
"@errorInternalError": {},
"errorInvalidInvitationCode": "The invitation code you provided is invalid. Please check the code and try again.",
"@errorInvalidInvitationCode": {},
"errorUsernameAlreadyTaken": "The username you want to use is already taken. Please choose a different username.",
"errorUsernameAlreadyTaken": "The username is already taken.",
"@errorUsernameAlreadyTaken": {},
"errorSignatureNotValid": "The provided signature is not valid. Please check your credentials and try again.",
"@errorSignatureNotValid": {},

View file

@ -1229,7 +1229,7 @@ abstract class AppLocalizations {
/// No description provided for @errorUsernameAlreadyTaken.
///
/// In en, this message translates to:
/// **'The username you want to use is already taken. Please choose a different username.'**
/// **'The username is already taken.'**
String get errorUsernameAlreadyTaken;
/// No description provided for @errorSignatureNotValid.

View file

@ -630,7 +630,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get errorUsernameAlreadyTaken =>
'Der Benutzername, den du verwenden möchtest, ist bereits vergeben. Bitte wähle einen anderen Benutzernamen.';
'Der Benutzername ist bereits vergeben.';
@override
String get errorSignatureNotValid =>

View file

@ -624,8 +624,7 @@ class AppLocalizationsEn extends AppLocalizations {
'The invitation code you provided is invalid. Please check the code and try again.';
@override
String get errorUsernameAlreadyTaken =>
'The username you want to use is already taken. Please choose a different username.';
String get errorUsernameAlreadyTaken => 'The username is already taken.';
@override
String get errorSignatureNotValid =>

View file

@ -793,6 +793,56 @@ class ApplicationData_GetUserByUsername extends $pb.GeneratedMessage {
void clearUsername() => clearField(1);
}
class ApplicationData_ChangeUsername extends $pb.GeneratedMessage {
factory ApplicationData_ChangeUsername({
$core.String? username,
}) {
final $result = create();
if (username != null) {
$result.username = username;
}
return $result;
}
ApplicationData_ChangeUsername._() : super();
factory ApplicationData_ChangeUsername.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
factory ApplicationData_ChangeUsername.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ApplicationData.ChangeUsername', package: const $pb.PackageName(_omitMessageNames ? '' : 'client_to_server'), createEmptyInstance: create)
..aOS(1, _omitFieldNames ? '' : 'username')
..hasRequiredFields = false
;
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
'Will be removed in next major version')
ApplicationData_ChangeUsername clone() => ApplicationData_ChangeUsername()..mergeFromMessage(this);
@$core.Deprecated(
'Using this can add significant overhead to your binary. '
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
'Will be removed in next major version')
ApplicationData_ChangeUsername copyWith(void Function(ApplicationData_ChangeUsername) updates) => super.copyWith((message) => updates(message as ApplicationData_ChangeUsername)) as ApplicationData_ChangeUsername;
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static ApplicationData_ChangeUsername create() => ApplicationData_ChangeUsername._();
ApplicationData_ChangeUsername createEmptyInstance() => create();
static $pb.PbList<ApplicationData_ChangeUsername> createRepeated() => $pb.PbList<ApplicationData_ChangeUsername>();
@$core.pragma('dart2js:noInline')
static ApplicationData_ChangeUsername getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ApplicationData_ChangeUsername>(create);
static ApplicationData_ChangeUsername? _defaultInstance;
@$pb.TagNumber(1)
$core.String get username => $_getSZ(0);
@$pb.TagNumber(1)
set username($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool hasUsername() => $_has(0);
@$pb.TagNumber(1)
void clearUsername() => clearField(1);
}
class ApplicationData_UpdateGoogleFcmToken extends $pb.GeneratedMessage {
factory ApplicationData_UpdateGoogleFcmToken({
$core.String? googleFcm,
@ -1706,117 +1756,122 @@ class ApplicationData_DeleteAccount extends $pb.GeneratedMessage {
}
enum ApplicationData_ApplicationData {
textmessage,
getuserbyusername,
getprekeysbyuserid,
getuserbyid,
updategooglefcmtoken,
getlocation,
getcurrentplaninfos,
redeemvoucher,
getavailableplans,
createvoucher,
getvouchers,
switchtopayedplan,
getaddaccountsinvites,
redeemadditionalcode,
removeadditionaluser,
updateplanoptions,
downloaddone,
getsignedprekeybyuserid,
updatesignedprekey,
deleteaccount,
reportuser,
textMessage,
getUserByUsername,
getPrekeysByUserId,
getUserById,
updateGoogleFcmToken,
getLocation,
getCurrentPlanInfos,
redeemVoucher,
getAvailablePlans,
createVoucher,
getVouchers,
switchtoPayedPlan,
getAddaccountsInvites,
redeemAdditionalCode,
removeAdditionalUser,
updatePlanOptions,
downloadDone,
getSignedPrekeyByUserid,
updateSignedPrekey,
deleteAccount,
reportUser,
changeUsername,
notSet
}
class ApplicationData extends $pb.GeneratedMessage {
factory ApplicationData({
ApplicationData_TextMessage? textmessage,
ApplicationData_GetUserByUsername? getuserbyusername,
ApplicationData_GetPrekeysByUserId? getprekeysbyuserid,
ApplicationData_GetUserById? getuserbyid,
ApplicationData_UpdateGoogleFcmToken? updategooglefcmtoken,
ApplicationData_GetLocation? getlocation,
ApplicationData_GetCurrentPlanInfos? getcurrentplaninfos,
ApplicationData_RedeemVoucher? redeemvoucher,
ApplicationData_GetAvailablePlans? getavailableplans,
ApplicationData_CreateVoucher? createvoucher,
ApplicationData_GetVouchers? getvouchers,
ApplicationData_SwitchToPayedPlan? switchtopayedplan,
ApplicationData_GetAddAccountsInvites? getaddaccountsinvites,
ApplicationData_RedeemAdditionalCode? redeemadditionalcode,
ApplicationData_RemoveAdditionalUser? removeadditionaluser,
ApplicationData_UpdatePlanOptions? updateplanoptions,
ApplicationData_DownloadDone? downloaddone,
ApplicationData_GetSignedPreKeyByUserId? getsignedprekeybyuserid,
ApplicationData_UpdateSignedPreKey? updatesignedprekey,
ApplicationData_DeleteAccount? deleteaccount,
ApplicationData_ReportUser? reportuser,
ApplicationData_TextMessage? textMessage,
ApplicationData_GetUserByUsername? getUserByUsername,
ApplicationData_GetPrekeysByUserId? getPrekeysByUserId,
ApplicationData_GetUserById? getUserById,
ApplicationData_UpdateGoogleFcmToken? updateGoogleFcmToken,
ApplicationData_GetLocation? getLocation,
ApplicationData_GetCurrentPlanInfos? getCurrentPlanInfos,
ApplicationData_RedeemVoucher? redeemVoucher,
ApplicationData_GetAvailablePlans? getAvailablePlans,
ApplicationData_CreateVoucher? createVoucher,
ApplicationData_GetVouchers? getVouchers,
ApplicationData_SwitchToPayedPlan? switchtoPayedPlan,
ApplicationData_GetAddAccountsInvites? getAddaccountsInvites,
ApplicationData_RedeemAdditionalCode? redeemAdditionalCode,
ApplicationData_RemoveAdditionalUser? removeAdditionalUser,
ApplicationData_UpdatePlanOptions? updatePlanOptions,
ApplicationData_DownloadDone? downloadDone,
ApplicationData_GetSignedPreKeyByUserId? getSignedPrekeyByUserid,
ApplicationData_UpdateSignedPreKey? updateSignedPrekey,
ApplicationData_DeleteAccount? deleteAccount,
ApplicationData_ReportUser? reportUser,
ApplicationData_ChangeUsername? changeUsername,
}) {
final $result = create();
if (textmessage != null) {
$result.textmessage = textmessage;
if (textMessage != null) {
$result.textMessage = textMessage;
}
if (getuserbyusername != null) {
$result.getuserbyusername = getuserbyusername;
if (getUserByUsername != null) {
$result.getUserByUsername = getUserByUsername;
}
if (getprekeysbyuserid != null) {
$result.getprekeysbyuserid = getprekeysbyuserid;
if (getPrekeysByUserId != null) {
$result.getPrekeysByUserId = getPrekeysByUserId;
}
if (getuserbyid != null) {
$result.getuserbyid = getuserbyid;
if (getUserById != null) {
$result.getUserById = getUserById;
}
if (updategooglefcmtoken != null) {
$result.updategooglefcmtoken = updategooglefcmtoken;
if (updateGoogleFcmToken != null) {
$result.updateGoogleFcmToken = updateGoogleFcmToken;
}
if (getlocation != null) {
$result.getlocation = getlocation;
if (getLocation != null) {
$result.getLocation = getLocation;
}
if (getcurrentplaninfos != null) {
$result.getcurrentplaninfos = getcurrentplaninfos;
if (getCurrentPlanInfos != null) {
$result.getCurrentPlanInfos = getCurrentPlanInfos;
}
if (redeemvoucher != null) {
$result.redeemvoucher = redeemvoucher;
if (redeemVoucher != null) {
$result.redeemVoucher = redeemVoucher;
}
if (getavailableplans != null) {
$result.getavailableplans = getavailableplans;
if (getAvailablePlans != null) {
$result.getAvailablePlans = getAvailablePlans;
}
if (createvoucher != null) {
$result.createvoucher = createvoucher;
if (createVoucher != null) {
$result.createVoucher = createVoucher;
}
if (getvouchers != null) {
$result.getvouchers = getvouchers;
if (getVouchers != null) {
$result.getVouchers = getVouchers;
}
if (switchtopayedplan != null) {
$result.switchtopayedplan = switchtopayedplan;
if (switchtoPayedPlan != null) {
$result.switchtoPayedPlan = switchtoPayedPlan;
}
if (getaddaccountsinvites != null) {
$result.getaddaccountsinvites = getaddaccountsinvites;
if (getAddaccountsInvites != null) {
$result.getAddaccountsInvites = getAddaccountsInvites;
}
if (redeemadditionalcode != null) {
$result.redeemadditionalcode = redeemadditionalcode;
if (redeemAdditionalCode != null) {
$result.redeemAdditionalCode = redeemAdditionalCode;
}
if (removeadditionaluser != null) {
$result.removeadditionaluser = removeadditionaluser;
if (removeAdditionalUser != null) {
$result.removeAdditionalUser = removeAdditionalUser;
}
if (updateplanoptions != null) {
$result.updateplanoptions = updateplanoptions;
if (updatePlanOptions != null) {
$result.updatePlanOptions = updatePlanOptions;
}
if (downloaddone != null) {
$result.downloaddone = downloaddone;
if (downloadDone != null) {
$result.downloadDone = downloadDone;
}
if (getsignedprekeybyuserid != null) {
$result.getsignedprekeybyuserid = getsignedprekeybyuserid;
if (getSignedPrekeyByUserid != null) {
$result.getSignedPrekeyByUserid = getSignedPrekeyByUserid;
}
if (updatesignedprekey != null) {
$result.updatesignedprekey = updatesignedprekey;
if (updateSignedPrekey != null) {
$result.updateSignedPrekey = updateSignedPrekey;
}
if (deleteaccount != null) {
$result.deleteaccount = deleteaccount;
if (deleteAccount != null) {
$result.deleteAccount = deleteAccount;
}
if (reportuser != null) {
$result.reportuser = reportuser;
if (reportUser != null) {
$result.reportUser = reportUser;
}
if (changeUsername != null) {
$result.changeUsername = changeUsername;
}
return $result;
}
@ -1825,52 +1880,54 @@ class ApplicationData extends $pb.GeneratedMessage {
factory ApplicationData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
static const $core.Map<$core.int, ApplicationData_ApplicationData> _ApplicationData_ApplicationDataByTag = {
1 : ApplicationData_ApplicationData.textmessage,
2 : ApplicationData_ApplicationData.getuserbyusername,
3 : ApplicationData_ApplicationData.getprekeysbyuserid,
6 : ApplicationData_ApplicationData.getuserbyid,
8 : ApplicationData_ApplicationData.updategooglefcmtoken,
9 : ApplicationData_ApplicationData.getlocation,
10 : ApplicationData_ApplicationData.getcurrentplaninfos,
11 : ApplicationData_ApplicationData.redeemvoucher,
12 : ApplicationData_ApplicationData.getavailableplans,
13 : ApplicationData_ApplicationData.createvoucher,
14 : ApplicationData_ApplicationData.getvouchers,
15 : ApplicationData_ApplicationData.switchtopayedplan,
16 : ApplicationData_ApplicationData.getaddaccountsinvites,
17 : ApplicationData_ApplicationData.redeemadditionalcode,
18 : ApplicationData_ApplicationData.removeadditionaluser,
19 : ApplicationData_ApplicationData.updateplanoptions,
20 : ApplicationData_ApplicationData.downloaddone,
22 : ApplicationData_ApplicationData.getsignedprekeybyuserid,
23 : ApplicationData_ApplicationData.updatesignedprekey,
24 : ApplicationData_ApplicationData.deleteaccount,
25 : ApplicationData_ApplicationData.reportuser,
1 : ApplicationData_ApplicationData.textMessage,
2 : ApplicationData_ApplicationData.getUserByUsername,
3 : ApplicationData_ApplicationData.getPrekeysByUserId,
6 : ApplicationData_ApplicationData.getUserById,
8 : ApplicationData_ApplicationData.updateGoogleFcmToken,
9 : ApplicationData_ApplicationData.getLocation,
10 : ApplicationData_ApplicationData.getCurrentPlanInfos,
11 : ApplicationData_ApplicationData.redeemVoucher,
12 : ApplicationData_ApplicationData.getAvailablePlans,
13 : ApplicationData_ApplicationData.createVoucher,
14 : ApplicationData_ApplicationData.getVouchers,
15 : ApplicationData_ApplicationData.switchtoPayedPlan,
16 : ApplicationData_ApplicationData.getAddaccountsInvites,
17 : ApplicationData_ApplicationData.redeemAdditionalCode,
18 : ApplicationData_ApplicationData.removeAdditionalUser,
19 : ApplicationData_ApplicationData.updatePlanOptions,
20 : ApplicationData_ApplicationData.downloadDone,
22 : ApplicationData_ApplicationData.getSignedPrekeyByUserid,
23 : ApplicationData_ApplicationData.updateSignedPrekey,
24 : ApplicationData_ApplicationData.deleteAccount,
25 : ApplicationData_ApplicationData.reportUser,
26 : ApplicationData_ApplicationData.changeUsername,
0 : ApplicationData_ApplicationData.notSet
};
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ApplicationData', package: const $pb.PackageName(_omitMessageNames ? '' : 'client_to_server'), createEmptyInstance: create)
..oo(0, [1, 2, 3, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25])
..aOM<ApplicationData_TextMessage>(1, _omitFieldNames ? '' : 'textmessage', subBuilder: ApplicationData_TextMessage.create)
..aOM<ApplicationData_GetUserByUsername>(2, _omitFieldNames ? '' : 'getuserbyusername', subBuilder: ApplicationData_GetUserByUsername.create)
..aOM<ApplicationData_GetPrekeysByUserId>(3, _omitFieldNames ? '' : 'getprekeysbyuserid', subBuilder: ApplicationData_GetPrekeysByUserId.create)
..aOM<ApplicationData_GetUserById>(6, _omitFieldNames ? '' : 'getuserbyid', subBuilder: ApplicationData_GetUserById.create)
..aOM<ApplicationData_UpdateGoogleFcmToken>(8, _omitFieldNames ? '' : 'updategooglefcmtoken', subBuilder: ApplicationData_UpdateGoogleFcmToken.create)
..aOM<ApplicationData_GetLocation>(9, _omitFieldNames ? '' : 'getlocation', subBuilder: ApplicationData_GetLocation.create)
..aOM<ApplicationData_GetCurrentPlanInfos>(10, _omitFieldNames ? '' : 'getcurrentplaninfos', subBuilder: ApplicationData_GetCurrentPlanInfos.create)
..aOM<ApplicationData_RedeemVoucher>(11, _omitFieldNames ? '' : 'redeemvoucher', subBuilder: ApplicationData_RedeemVoucher.create)
..aOM<ApplicationData_GetAvailablePlans>(12, _omitFieldNames ? '' : 'getavailableplans', subBuilder: ApplicationData_GetAvailablePlans.create)
..aOM<ApplicationData_CreateVoucher>(13, _omitFieldNames ? '' : 'createvoucher', subBuilder: ApplicationData_CreateVoucher.create)
..aOM<ApplicationData_GetVouchers>(14, _omitFieldNames ? '' : 'getvouchers', subBuilder: ApplicationData_GetVouchers.create)
..aOM<ApplicationData_SwitchToPayedPlan>(15, _omitFieldNames ? '' : 'Switchtopayedplan', protoName: 'Switchtopayedplan', subBuilder: ApplicationData_SwitchToPayedPlan.create)
..aOM<ApplicationData_GetAddAccountsInvites>(16, _omitFieldNames ? '' : 'getaddaccountsinvites', subBuilder: ApplicationData_GetAddAccountsInvites.create)
..aOM<ApplicationData_RedeemAdditionalCode>(17, _omitFieldNames ? '' : 'redeemadditionalcode', subBuilder: ApplicationData_RedeemAdditionalCode.create)
..aOM<ApplicationData_RemoveAdditionalUser>(18, _omitFieldNames ? '' : 'removeadditionaluser', subBuilder: ApplicationData_RemoveAdditionalUser.create)
..aOM<ApplicationData_UpdatePlanOptions>(19, _omitFieldNames ? '' : 'updateplanoptions', subBuilder: ApplicationData_UpdatePlanOptions.create)
..aOM<ApplicationData_DownloadDone>(20, _omitFieldNames ? '' : 'downloaddone', subBuilder: ApplicationData_DownloadDone.create)
..aOM<ApplicationData_GetSignedPreKeyByUserId>(22, _omitFieldNames ? '' : 'getsignedprekeybyuserid', subBuilder: ApplicationData_GetSignedPreKeyByUserId.create)
..aOM<ApplicationData_UpdateSignedPreKey>(23, _omitFieldNames ? '' : 'updatesignedprekey', subBuilder: ApplicationData_UpdateSignedPreKey.create)
..aOM<ApplicationData_DeleteAccount>(24, _omitFieldNames ? '' : 'deleteaccount', subBuilder: ApplicationData_DeleteAccount.create)
..aOM<ApplicationData_ReportUser>(25, _omitFieldNames ? '' : 'reportuser', subBuilder: ApplicationData_ReportUser.create)
..oo(0, [1, 2, 3, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26])
..aOM<ApplicationData_TextMessage>(1, _omitFieldNames ? '' : 'textMessage', protoName: 'textMessage', subBuilder: ApplicationData_TextMessage.create)
..aOM<ApplicationData_GetUserByUsername>(2, _omitFieldNames ? '' : 'getUserByUsername', protoName: 'getUserByUsername', subBuilder: ApplicationData_GetUserByUsername.create)
..aOM<ApplicationData_GetPrekeysByUserId>(3, _omitFieldNames ? '' : 'getPrekeysByUserId', protoName: 'getPrekeysByUserId', subBuilder: ApplicationData_GetPrekeysByUserId.create)
..aOM<ApplicationData_GetUserById>(6, _omitFieldNames ? '' : 'getUserById', protoName: 'getUserById', subBuilder: ApplicationData_GetUserById.create)
..aOM<ApplicationData_UpdateGoogleFcmToken>(8, _omitFieldNames ? '' : 'updateGoogleFcmToken', protoName: 'updateGoogleFcmToken', subBuilder: ApplicationData_UpdateGoogleFcmToken.create)
..aOM<ApplicationData_GetLocation>(9, _omitFieldNames ? '' : 'getLocation', protoName: 'getLocation', subBuilder: ApplicationData_GetLocation.create)
..aOM<ApplicationData_GetCurrentPlanInfos>(10, _omitFieldNames ? '' : 'getCurrentPlanInfos', protoName: 'getCurrentPlanInfos', subBuilder: ApplicationData_GetCurrentPlanInfos.create)
..aOM<ApplicationData_RedeemVoucher>(11, _omitFieldNames ? '' : 'redeemVoucher', protoName: 'redeemVoucher', subBuilder: ApplicationData_RedeemVoucher.create)
..aOM<ApplicationData_GetAvailablePlans>(12, _omitFieldNames ? '' : 'getAvailablePlans', protoName: 'getAvailablePlans', subBuilder: ApplicationData_GetAvailablePlans.create)
..aOM<ApplicationData_CreateVoucher>(13, _omitFieldNames ? '' : 'createVoucher', protoName: 'createVoucher', subBuilder: ApplicationData_CreateVoucher.create)
..aOM<ApplicationData_GetVouchers>(14, _omitFieldNames ? '' : 'getVouchers', protoName: 'getVouchers', subBuilder: ApplicationData_GetVouchers.create)
..aOM<ApplicationData_SwitchToPayedPlan>(15, _omitFieldNames ? '' : 'switchtoPayedPlan', protoName: 'switchtoPayedPlan', subBuilder: ApplicationData_SwitchToPayedPlan.create)
..aOM<ApplicationData_GetAddAccountsInvites>(16, _omitFieldNames ? '' : 'getAddaccountsInvites', protoName: 'getAddaccountsInvites', subBuilder: ApplicationData_GetAddAccountsInvites.create)
..aOM<ApplicationData_RedeemAdditionalCode>(17, _omitFieldNames ? '' : 'redeemAdditionalCode', protoName: 'redeemAdditionalCode', subBuilder: ApplicationData_RedeemAdditionalCode.create)
..aOM<ApplicationData_RemoveAdditionalUser>(18, _omitFieldNames ? '' : 'removeAdditionalUser', protoName: 'removeAdditionalUser', subBuilder: ApplicationData_RemoveAdditionalUser.create)
..aOM<ApplicationData_UpdatePlanOptions>(19, _omitFieldNames ? '' : 'updatePlanOptions', protoName: 'updatePlanOptions', subBuilder: ApplicationData_UpdatePlanOptions.create)
..aOM<ApplicationData_DownloadDone>(20, _omitFieldNames ? '' : 'downloadDone', protoName: 'downloadDone', subBuilder: ApplicationData_DownloadDone.create)
..aOM<ApplicationData_GetSignedPreKeyByUserId>(22, _omitFieldNames ? '' : 'getSignedPrekeyByUserid', protoName: 'getSignedPrekeyByUserid', subBuilder: ApplicationData_GetSignedPreKeyByUserId.create)
..aOM<ApplicationData_UpdateSignedPreKey>(23, _omitFieldNames ? '' : 'updateSignedPrekey', protoName: 'updateSignedPrekey', subBuilder: ApplicationData_UpdateSignedPreKey.create)
..aOM<ApplicationData_DeleteAccount>(24, _omitFieldNames ? '' : 'deleteAccount', protoName: 'deleteAccount', subBuilder: ApplicationData_DeleteAccount.create)
..aOM<ApplicationData_ReportUser>(25, _omitFieldNames ? '' : 'reportUser', protoName: 'reportUser', subBuilder: ApplicationData_ReportUser.create)
..aOM<ApplicationData_ChangeUsername>(26, _omitFieldNames ? '' : 'changeUsername', protoName: 'changeUsername', subBuilder: ApplicationData_ChangeUsername.create)
..hasRequiredFields = false
;
@ -1899,235 +1956,246 @@ class ApplicationData extends $pb.GeneratedMessage {
void clearApplicationData() => clearField($_whichOneof(0));
@$pb.TagNumber(1)
ApplicationData_TextMessage get textmessage => $_getN(0);
ApplicationData_TextMessage get textMessage => $_getN(0);
@$pb.TagNumber(1)
set textmessage(ApplicationData_TextMessage v) { setField(1, v); }
set textMessage(ApplicationData_TextMessage v) { setField(1, v); }
@$pb.TagNumber(1)
$core.bool hasTextmessage() => $_has(0);
$core.bool hasTextMessage() => $_has(0);
@$pb.TagNumber(1)
void clearTextmessage() => clearField(1);
void clearTextMessage() => clearField(1);
@$pb.TagNumber(1)
ApplicationData_TextMessage ensureTextmessage() => $_ensure(0);
ApplicationData_TextMessage ensureTextMessage() => $_ensure(0);
@$pb.TagNumber(2)
ApplicationData_GetUserByUsername get getuserbyusername => $_getN(1);
ApplicationData_GetUserByUsername get getUserByUsername => $_getN(1);
@$pb.TagNumber(2)
set getuserbyusername(ApplicationData_GetUserByUsername v) { setField(2, v); }
set getUserByUsername(ApplicationData_GetUserByUsername v) { setField(2, v); }
@$pb.TagNumber(2)
$core.bool hasGetuserbyusername() => $_has(1);
$core.bool hasGetUserByUsername() => $_has(1);
@$pb.TagNumber(2)
void clearGetuserbyusername() => clearField(2);
void clearGetUserByUsername() => clearField(2);
@$pb.TagNumber(2)
ApplicationData_GetUserByUsername ensureGetuserbyusername() => $_ensure(1);
ApplicationData_GetUserByUsername ensureGetUserByUsername() => $_ensure(1);
@$pb.TagNumber(3)
ApplicationData_GetPrekeysByUserId get getprekeysbyuserid => $_getN(2);
ApplicationData_GetPrekeysByUserId get getPrekeysByUserId => $_getN(2);
@$pb.TagNumber(3)
set getprekeysbyuserid(ApplicationData_GetPrekeysByUserId v) { setField(3, v); }
set getPrekeysByUserId(ApplicationData_GetPrekeysByUserId v) { setField(3, v); }
@$pb.TagNumber(3)
$core.bool hasGetprekeysbyuserid() => $_has(2);
$core.bool hasGetPrekeysByUserId() => $_has(2);
@$pb.TagNumber(3)
void clearGetprekeysbyuserid() => clearField(3);
void clearGetPrekeysByUserId() => clearField(3);
@$pb.TagNumber(3)
ApplicationData_GetPrekeysByUserId ensureGetprekeysbyuserid() => $_ensure(2);
ApplicationData_GetPrekeysByUserId ensureGetPrekeysByUserId() => $_ensure(2);
@$pb.TagNumber(6)
ApplicationData_GetUserById get getuserbyid => $_getN(3);
ApplicationData_GetUserById get getUserById => $_getN(3);
@$pb.TagNumber(6)
set getuserbyid(ApplicationData_GetUserById v) { setField(6, v); }
set getUserById(ApplicationData_GetUserById v) { setField(6, v); }
@$pb.TagNumber(6)
$core.bool hasGetuserbyid() => $_has(3);
$core.bool hasGetUserById() => $_has(3);
@$pb.TagNumber(6)
void clearGetuserbyid() => clearField(6);
void clearGetUserById() => clearField(6);
@$pb.TagNumber(6)
ApplicationData_GetUserById ensureGetuserbyid() => $_ensure(3);
ApplicationData_GetUserById ensureGetUserById() => $_ensure(3);
@$pb.TagNumber(8)
ApplicationData_UpdateGoogleFcmToken get updategooglefcmtoken => $_getN(4);
ApplicationData_UpdateGoogleFcmToken get updateGoogleFcmToken => $_getN(4);
@$pb.TagNumber(8)
set updategooglefcmtoken(ApplicationData_UpdateGoogleFcmToken v) { setField(8, v); }
set updateGoogleFcmToken(ApplicationData_UpdateGoogleFcmToken v) { setField(8, v); }
@$pb.TagNumber(8)
$core.bool hasUpdategooglefcmtoken() => $_has(4);
$core.bool hasUpdateGoogleFcmToken() => $_has(4);
@$pb.TagNumber(8)
void clearUpdategooglefcmtoken() => clearField(8);
void clearUpdateGoogleFcmToken() => clearField(8);
@$pb.TagNumber(8)
ApplicationData_UpdateGoogleFcmToken ensureUpdategooglefcmtoken() => $_ensure(4);
ApplicationData_UpdateGoogleFcmToken ensureUpdateGoogleFcmToken() => $_ensure(4);
@$pb.TagNumber(9)
ApplicationData_GetLocation get getlocation => $_getN(5);
ApplicationData_GetLocation get getLocation => $_getN(5);
@$pb.TagNumber(9)
set getlocation(ApplicationData_GetLocation v) { setField(9, v); }
set getLocation(ApplicationData_GetLocation v) { setField(9, v); }
@$pb.TagNumber(9)
$core.bool hasGetlocation() => $_has(5);
$core.bool hasGetLocation() => $_has(5);
@$pb.TagNumber(9)
void clearGetlocation() => clearField(9);
void clearGetLocation() => clearField(9);
@$pb.TagNumber(9)
ApplicationData_GetLocation ensureGetlocation() => $_ensure(5);
ApplicationData_GetLocation ensureGetLocation() => $_ensure(5);
@$pb.TagNumber(10)
ApplicationData_GetCurrentPlanInfos get getcurrentplaninfos => $_getN(6);
ApplicationData_GetCurrentPlanInfos get getCurrentPlanInfos => $_getN(6);
@$pb.TagNumber(10)
set getcurrentplaninfos(ApplicationData_GetCurrentPlanInfos v) { setField(10, v); }
set getCurrentPlanInfos(ApplicationData_GetCurrentPlanInfos v) { setField(10, v); }
@$pb.TagNumber(10)
$core.bool hasGetcurrentplaninfos() => $_has(6);
$core.bool hasGetCurrentPlanInfos() => $_has(6);
@$pb.TagNumber(10)
void clearGetcurrentplaninfos() => clearField(10);
void clearGetCurrentPlanInfos() => clearField(10);
@$pb.TagNumber(10)
ApplicationData_GetCurrentPlanInfos ensureGetcurrentplaninfos() => $_ensure(6);
ApplicationData_GetCurrentPlanInfos ensureGetCurrentPlanInfos() => $_ensure(6);
@$pb.TagNumber(11)
ApplicationData_RedeemVoucher get redeemvoucher => $_getN(7);
ApplicationData_RedeemVoucher get redeemVoucher => $_getN(7);
@$pb.TagNumber(11)
set redeemvoucher(ApplicationData_RedeemVoucher v) { setField(11, v); }
set redeemVoucher(ApplicationData_RedeemVoucher v) { setField(11, v); }
@$pb.TagNumber(11)
$core.bool hasRedeemvoucher() => $_has(7);
$core.bool hasRedeemVoucher() => $_has(7);
@$pb.TagNumber(11)
void clearRedeemvoucher() => clearField(11);
void clearRedeemVoucher() => clearField(11);
@$pb.TagNumber(11)
ApplicationData_RedeemVoucher ensureRedeemvoucher() => $_ensure(7);
ApplicationData_RedeemVoucher ensureRedeemVoucher() => $_ensure(7);
@$pb.TagNumber(12)
ApplicationData_GetAvailablePlans get getavailableplans => $_getN(8);
ApplicationData_GetAvailablePlans get getAvailablePlans => $_getN(8);
@$pb.TagNumber(12)
set getavailableplans(ApplicationData_GetAvailablePlans v) { setField(12, v); }
set getAvailablePlans(ApplicationData_GetAvailablePlans v) { setField(12, v); }
@$pb.TagNumber(12)
$core.bool hasGetavailableplans() => $_has(8);
$core.bool hasGetAvailablePlans() => $_has(8);
@$pb.TagNumber(12)
void clearGetavailableplans() => clearField(12);
void clearGetAvailablePlans() => clearField(12);
@$pb.TagNumber(12)
ApplicationData_GetAvailablePlans ensureGetavailableplans() => $_ensure(8);
ApplicationData_GetAvailablePlans ensureGetAvailablePlans() => $_ensure(8);
@$pb.TagNumber(13)
ApplicationData_CreateVoucher get createvoucher => $_getN(9);
ApplicationData_CreateVoucher get createVoucher => $_getN(9);
@$pb.TagNumber(13)
set createvoucher(ApplicationData_CreateVoucher v) { setField(13, v); }
set createVoucher(ApplicationData_CreateVoucher v) { setField(13, v); }
@$pb.TagNumber(13)
$core.bool hasCreatevoucher() => $_has(9);
$core.bool hasCreateVoucher() => $_has(9);
@$pb.TagNumber(13)
void clearCreatevoucher() => clearField(13);
void clearCreateVoucher() => clearField(13);
@$pb.TagNumber(13)
ApplicationData_CreateVoucher ensureCreatevoucher() => $_ensure(9);
ApplicationData_CreateVoucher ensureCreateVoucher() => $_ensure(9);
@$pb.TagNumber(14)
ApplicationData_GetVouchers get getvouchers => $_getN(10);
ApplicationData_GetVouchers get getVouchers => $_getN(10);
@$pb.TagNumber(14)
set getvouchers(ApplicationData_GetVouchers v) { setField(14, v); }
set getVouchers(ApplicationData_GetVouchers v) { setField(14, v); }
@$pb.TagNumber(14)
$core.bool hasGetvouchers() => $_has(10);
$core.bool hasGetVouchers() => $_has(10);
@$pb.TagNumber(14)
void clearGetvouchers() => clearField(14);
void clearGetVouchers() => clearField(14);
@$pb.TagNumber(14)
ApplicationData_GetVouchers ensureGetvouchers() => $_ensure(10);
ApplicationData_GetVouchers ensureGetVouchers() => $_ensure(10);
@$pb.TagNumber(15)
ApplicationData_SwitchToPayedPlan get switchtopayedplan => $_getN(11);
ApplicationData_SwitchToPayedPlan get switchtoPayedPlan => $_getN(11);
@$pb.TagNumber(15)
set switchtopayedplan(ApplicationData_SwitchToPayedPlan v) { setField(15, v); }
set switchtoPayedPlan(ApplicationData_SwitchToPayedPlan v) { setField(15, v); }
@$pb.TagNumber(15)
$core.bool hasSwitchtopayedplan() => $_has(11);
$core.bool hasSwitchtoPayedPlan() => $_has(11);
@$pb.TagNumber(15)
void clearSwitchtopayedplan() => clearField(15);
void clearSwitchtoPayedPlan() => clearField(15);
@$pb.TagNumber(15)
ApplicationData_SwitchToPayedPlan ensureSwitchtopayedplan() => $_ensure(11);
ApplicationData_SwitchToPayedPlan ensureSwitchtoPayedPlan() => $_ensure(11);
@$pb.TagNumber(16)
ApplicationData_GetAddAccountsInvites get getaddaccountsinvites => $_getN(12);
ApplicationData_GetAddAccountsInvites get getAddaccountsInvites => $_getN(12);
@$pb.TagNumber(16)
set getaddaccountsinvites(ApplicationData_GetAddAccountsInvites v) { setField(16, v); }
set getAddaccountsInvites(ApplicationData_GetAddAccountsInvites v) { setField(16, v); }
@$pb.TagNumber(16)
$core.bool hasGetaddaccountsinvites() => $_has(12);
$core.bool hasGetAddaccountsInvites() => $_has(12);
@$pb.TagNumber(16)
void clearGetaddaccountsinvites() => clearField(16);
void clearGetAddaccountsInvites() => clearField(16);
@$pb.TagNumber(16)
ApplicationData_GetAddAccountsInvites ensureGetaddaccountsinvites() => $_ensure(12);
ApplicationData_GetAddAccountsInvites ensureGetAddaccountsInvites() => $_ensure(12);
@$pb.TagNumber(17)
ApplicationData_RedeemAdditionalCode get redeemadditionalcode => $_getN(13);
ApplicationData_RedeemAdditionalCode get redeemAdditionalCode => $_getN(13);
@$pb.TagNumber(17)
set redeemadditionalcode(ApplicationData_RedeemAdditionalCode v) { setField(17, v); }
set redeemAdditionalCode(ApplicationData_RedeemAdditionalCode v) { setField(17, v); }
@$pb.TagNumber(17)
$core.bool hasRedeemadditionalcode() => $_has(13);
$core.bool hasRedeemAdditionalCode() => $_has(13);
@$pb.TagNumber(17)
void clearRedeemadditionalcode() => clearField(17);
void clearRedeemAdditionalCode() => clearField(17);
@$pb.TagNumber(17)
ApplicationData_RedeemAdditionalCode ensureRedeemadditionalcode() => $_ensure(13);
ApplicationData_RedeemAdditionalCode ensureRedeemAdditionalCode() => $_ensure(13);
@$pb.TagNumber(18)
ApplicationData_RemoveAdditionalUser get removeadditionaluser => $_getN(14);
ApplicationData_RemoveAdditionalUser get removeAdditionalUser => $_getN(14);
@$pb.TagNumber(18)
set removeadditionaluser(ApplicationData_RemoveAdditionalUser v) { setField(18, v); }
set removeAdditionalUser(ApplicationData_RemoveAdditionalUser v) { setField(18, v); }
@$pb.TagNumber(18)
$core.bool hasRemoveadditionaluser() => $_has(14);
$core.bool hasRemoveAdditionalUser() => $_has(14);
@$pb.TagNumber(18)
void clearRemoveadditionaluser() => clearField(18);
void clearRemoveAdditionalUser() => clearField(18);
@$pb.TagNumber(18)
ApplicationData_RemoveAdditionalUser ensureRemoveadditionaluser() => $_ensure(14);
ApplicationData_RemoveAdditionalUser ensureRemoveAdditionalUser() => $_ensure(14);
@$pb.TagNumber(19)
ApplicationData_UpdatePlanOptions get updateplanoptions => $_getN(15);
ApplicationData_UpdatePlanOptions get updatePlanOptions => $_getN(15);
@$pb.TagNumber(19)
set updateplanoptions(ApplicationData_UpdatePlanOptions v) { setField(19, v); }
set updatePlanOptions(ApplicationData_UpdatePlanOptions v) { setField(19, v); }
@$pb.TagNumber(19)
$core.bool hasUpdateplanoptions() => $_has(15);
$core.bool hasUpdatePlanOptions() => $_has(15);
@$pb.TagNumber(19)
void clearUpdateplanoptions() => clearField(19);
void clearUpdatePlanOptions() => clearField(19);
@$pb.TagNumber(19)
ApplicationData_UpdatePlanOptions ensureUpdateplanoptions() => $_ensure(15);
ApplicationData_UpdatePlanOptions ensureUpdatePlanOptions() => $_ensure(15);
@$pb.TagNumber(20)
ApplicationData_DownloadDone get downloaddone => $_getN(16);
ApplicationData_DownloadDone get downloadDone => $_getN(16);
@$pb.TagNumber(20)
set downloaddone(ApplicationData_DownloadDone v) { setField(20, v); }
set downloadDone(ApplicationData_DownloadDone v) { setField(20, v); }
@$pb.TagNumber(20)
$core.bool hasDownloaddone() => $_has(16);
$core.bool hasDownloadDone() => $_has(16);
@$pb.TagNumber(20)
void clearDownloaddone() => clearField(20);
void clearDownloadDone() => clearField(20);
@$pb.TagNumber(20)
ApplicationData_DownloadDone ensureDownloaddone() => $_ensure(16);
ApplicationData_DownloadDone ensureDownloadDone() => $_ensure(16);
@$pb.TagNumber(22)
ApplicationData_GetSignedPreKeyByUserId get getsignedprekeybyuserid => $_getN(17);
ApplicationData_GetSignedPreKeyByUserId get getSignedPrekeyByUserid => $_getN(17);
@$pb.TagNumber(22)
set getsignedprekeybyuserid(ApplicationData_GetSignedPreKeyByUserId v) { setField(22, v); }
set getSignedPrekeyByUserid(ApplicationData_GetSignedPreKeyByUserId v) { setField(22, v); }
@$pb.TagNumber(22)
$core.bool hasGetsignedprekeybyuserid() => $_has(17);
$core.bool hasGetSignedPrekeyByUserid() => $_has(17);
@$pb.TagNumber(22)
void clearGetsignedprekeybyuserid() => clearField(22);
void clearGetSignedPrekeyByUserid() => clearField(22);
@$pb.TagNumber(22)
ApplicationData_GetSignedPreKeyByUserId ensureGetsignedprekeybyuserid() => $_ensure(17);
ApplicationData_GetSignedPreKeyByUserId ensureGetSignedPrekeyByUserid() => $_ensure(17);
@$pb.TagNumber(23)
ApplicationData_UpdateSignedPreKey get updatesignedprekey => $_getN(18);
ApplicationData_UpdateSignedPreKey get updateSignedPrekey => $_getN(18);
@$pb.TagNumber(23)
set updatesignedprekey(ApplicationData_UpdateSignedPreKey v) { setField(23, v); }
set updateSignedPrekey(ApplicationData_UpdateSignedPreKey v) { setField(23, v); }
@$pb.TagNumber(23)
$core.bool hasUpdatesignedprekey() => $_has(18);
$core.bool hasUpdateSignedPrekey() => $_has(18);
@$pb.TagNumber(23)
void clearUpdatesignedprekey() => clearField(23);
void clearUpdateSignedPrekey() => clearField(23);
@$pb.TagNumber(23)
ApplicationData_UpdateSignedPreKey ensureUpdatesignedprekey() => $_ensure(18);
ApplicationData_UpdateSignedPreKey ensureUpdateSignedPrekey() => $_ensure(18);
@$pb.TagNumber(24)
ApplicationData_DeleteAccount get deleteaccount => $_getN(19);
ApplicationData_DeleteAccount get deleteAccount => $_getN(19);
@$pb.TagNumber(24)
set deleteaccount(ApplicationData_DeleteAccount v) { setField(24, v); }
set deleteAccount(ApplicationData_DeleteAccount v) { setField(24, v); }
@$pb.TagNumber(24)
$core.bool hasDeleteaccount() => $_has(19);
$core.bool hasDeleteAccount() => $_has(19);
@$pb.TagNumber(24)
void clearDeleteaccount() => clearField(24);
void clearDeleteAccount() => clearField(24);
@$pb.TagNumber(24)
ApplicationData_DeleteAccount ensureDeleteaccount() => $_ensure(19);
ApplicationData_DeleteAccount ensureDeleteAccount() => $_ensure(19);
@$pb.TagNumber(25)
ApplicationData_ReportUser get reportuser => $_getN(20);
ApplicationData_ReportUser get reportUser => $_getN(20);
@$pb.TagNumber(25)
set reportuser(ApplicationData_ReportUser v) { setField(25, v); }
set reportUser(ApplicationData_ReportUser v) { setField(25, v); }
@$pb.TagNumber(25)
$core.bool hasReportuser() => $_has(20);
$core.bool hasReportUser() => $_has(20);
@$pb.TagNumber(25)
void clearReportuser() => clearField(25);
void clearReportUser() => clearField(25);
@$pb.TagNumber(25)
ApplicationData_ReportUser ensureReportuser() => $_ensure(20);
ApplicationData_ReportUser ensureReportUser() => $_ensure(20);
@$pb.TagNumber(26)
ApplicationData_ChangeUsername get changeUsername => $_getN(21);
@$pb.TagNumber(26)
set changeUsername(ApplicationData_ChangeUsername v) { setField(26, v); }
@$pb.TagNumber(26)
$core.bool hasChangeUsername() => $_has(21);
@$pb.TagNumber(26)
void clearChangeUsername() => clearField(26);
@$pb.TagNumber(26)
ApplicationData_ChangeUsername ensureChangeUsername() => $_ensure(21);
}
class Response_PreKey extends $pb.GeneratedMessage {

View file

@ -139,29 +139,30 @@ final $typed_data.Uint8List handshakeDescriptor = $convert.base64Decode(
const ApplicationData$json = {
'1': 'ApplicationData',
'2': [
{'1': 'textmessage', '3': 1, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.TextMessage', '9': 0, '10': 'textmessage'},
{'1': 'getuserbyusername', '3': 2, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetUserByUsername', '9': 0, '10': 'getuserbyusername'},
{'1': 'getprekeysbyuserid', '3': 3, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetPrekeysByUserId', '9': 0, '10': 'getprekeysbyuserid'},
{'1': 'getuserbyid', '3': 6, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetUserById', '9': 0, '10': 'getuserbyid'},
{'1': 'updategooglefcmtoken', '3': 8, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.UpdateGoogleFcmToken', '9': 0, '10': 'updategooglefcmtoken'},
{'1': 'getlocation', '3': 9, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetLocation', '9': 0, '10': 'getlocation'},
{'1': 'getcurrentplaninfos', '3': 10, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetCurrentPlanInfos', '9': 0, '10': 'getcurrentplaninfos'},
{'1': 'redeemvoucher', '3': 11, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.RedeemVoucher', '9': 0, '10': 'redeemvoucher'},
{'1': 'getavailableplans', '3': 12, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetAvailablePlans', '9': 0, '10': 'getavailableplans'},
{'1': 'createvoucher', '3': 13, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.CreateVoucher', '9': 0, '10': 'createvoucher'},
{'1': 'getvouchers', '3': 14, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetVouchers', '9': 0, '10': 'getvouchers'},
{'1': 'Switchtopayedplan', '3': 15, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.SwitchToPayedPlan', '9': 0, '10': 'Switchtopayedplan'},
{'1': 'getaddaccountsinvites', '3': 16, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetAddAccountsInvites', '9': 0, '10': 'getaddaccountsinvites'},
{'1': 'redeemadditionalcode', '3': 17, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.RedeemAdditionalCode', '9': 0, '10': 'redeemadditionalcode'},
{'1': 'removeadditionaluser', '3': 18, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.RemoveAdditionalUser', '9': 0, '10': 'removeadditionaluser'},
{'1': 'updateplanoptions', '3': 19, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.UpdatePlanOptions', '9': 0, '10': 'updateplanoptions'},
{'1': 'downloaddone', '3': 20, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.DownloadDone', '9': 0, '10': 'downloaddone'},
{'1': 'getsignedprekeybyuserid', '3': 22, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetSignedPreKeyByUserId', '9': 0, '10': 'getsignedprekeybyuserid'},
{'1': 'updatesignedprekey', '3': 23, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.UpdateSignedPreKey', '9': 0, '10': 'updatesignedprekey'},
{'1': 'deleteaccount', '3': 24, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.DeleteAccount', '9': 0, '10': 'deleteaccount'},
{'1': 'reportuser', '3': 25, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.ReportUser', '9': 0, '10': 'reportuser'},
{'1': 'textMessage', '3': 1, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.TextMessage', '9': 0, '10': 'textMessage'},
{'1': 'getUserByUsername', '3': 2, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetUserByUsername', '9': 0, '10': 'getUserByUsername'},
{'1': 'getPrekeysByUserId', '3': 3, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetPrekeysByUserId', '9': 0, '10': 'getPrekeysByUserId'},
{'1': 'getUserById', '3': 6, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetUserById', '9': 0, '10': 'getUserById'},
{'1': 'updateGoogleFcmToken', '3': 8, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.UpdateGoogleFcmToken', '9': 0, '10': 'updateGoogleFcmToken'},
{'1': 'getLocation', '3': 9, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetLocation', '9': 0, '10': 'getLocation'},
{'1': 'getCurrentPlanInfos', '3': 10, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetCurrentPlanInfos', '9': 0, '10': 'getCurrentPlanInfos'},
{'1': 'redeemVoucher', '3': 11, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.RedeemVoucher', '9': 0, '10': 'redeemVoucher'},
{'1': 'getAvailablePlans', '3': 12, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetAvailablePlans', '9': 0, '10': 'getAvailablePlans'},
{'1': 'createVoucher', '3': 13, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.CreateVoucher', '9': 0, '10': 'createVoucher'},
{'1': 'getVouchers', '3': 14, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetVouchers', '9': 0, '10': 'getVouchers'},
{'1': 'switchtoPayedPlan', '3': 15, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.SwitchToPayedPlan', '9': 0, '10': 'switchtoPayedPlan'},
{'1': 'getAddaccountsInvites', '3': 16, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetAddAccountsInvites', '9': 0, '10': 'getAddaccountsInvites'},
{'1': 'redeemAdditionalCode', '3': 17, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.RedeemAdditionalCode', '9': 0, '10': 'redeemAdditionalCode'},
{'1': 'removeAdditionalUser', '3': 18, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.RemoveAdditionalUser', '9': 0, '10': 'removeAdditionalUser'},
{'1': 'updatePlanOptions', '3': 19, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.UpdatePlanOptions', '9': 0, '10': 'updatePlanOptions'},
{'1': 'downloadDone', '3': 20, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.DownloadDone', '9': 0, '10': 'downloadDone'},
{'1': 'getSignedPrekeyByUserid', '3': 22, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.GetSignedPreKeyByUserId', '9': 0, '10': 'getSignedPrekeyByUserid'},
{'1': 'updateSignedPrekey', '3': 23, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.UpdateSignedPreKey', '9': 0, '10': 'updateSignedPrekey'},
{'1': 'deleteAccount', '3': 24, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.DeleteAccount', '9': 0, '10': 'deleteAccount'},
{'1': 'reportUser', '3': 25, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.ReportUser', '9': 0, '10': 'reportUser'},
{'1': 'changeUsername', '3': 26, '4': 1, '5': 11, '6': '.client_to_server.ApplicationData.ChangeUsername', '9': 0, '10': 'changeUsername'},
],
'3': [ApplicationData_TextMessage$json, ApplicationData_GetUserByUsername$json, ApplicationData_UpdateGoogleFcmToken$json, ApplicationData_GetUserById$json, ApplicationData_RedeemVoucher$json, ApplicationData_SwitchToPayedPlan$json, ApplicationData_UpdatePlanOptions$json, ApplicationData_CreateVoucher$json, ApplicationData_GetLocation$json, ApplicationData_GetVouchers$json, ApplicationData_GetAvailablePlans$json, ApplicationData_GetAddAccountsInvites$json, ApplicationData_GetCurrentPlanInfos$json, ApplicationData_RedeemAdditionalCode$json, ApplicationData_RemoveAdditionalUser$json, ApplicationData_GetPrekeysByUserId$json, ApplicationData_GetSignedPreKeyByUserId$json, ApplicationData_UpdateSignedPreKey$json, ApplicationData_DownloadDone$json, ApplicationData_ReportUser$json, ApplicationData_DeleteAccount$json],
'3': [ApplicationData_TextMessage$json, ApplicationData_GetUserByUsername$json, ApplicationData_ChangeUsername$json, ApplicationData_UpdateGoogleFcmToken$json, ApplicationData_GetUserById$json, ApplicationData_RedeemVoucher$json, ApplicationData_SwitchToPayedPlan$json, ApplicationData_UpdatePlanOptions$json, ApplicationData_CreateVoucher$json, ApplicationData_GetLocation$json, ApplicationData_GetVouchers$json, ApplicationData_GetAvailablePlans$json, ApplicationData_GetAddAccountsInvites$json, ApplicationData_GetCurrentPlanInfos$json, ApplicationData_RedeemAdditionalCode$json, ApplicationData_RemoveAdditionalUser$json, ApplicationData_GetPrekeysByUserId$json, ApplicationData_GetSignedPreKeyByUserId$json, ApplicationData_UpdateSignedPreKey$json, ApplicationData_DownloadDone$json, ApplicationData_ReportUser$json, ApplicationData_DeleteAccount$json],
'8': [
{'1': 'ApplicationData'},
],
@ -188,6 +189,14 @@ const ApplicationData_GetUserByUsername$json = {
],
};
@$core.Deprecated('Use applicationDataDescriptor instead')
const ApplicationData_ChangeUsername$json = {
'1': 'ChangeUsername',
'2': [
{'1': 'username', '3': 1, '4': 1, '5': 9, '10': 'username'},
],
};
@$core.Deprecated('Use applicationDataDescriptor instead')
const ApplicationData_UpdateGoogleFcmToken$json = {
'1': 'UpdateGoogleFcmToken',
@ -329,64 +338,67 @@ const ApplicationData_DeleteAccount$json = {
/// Descriptor for `ApplicationData`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List applicationDataDescriptor = $convert.base64Decode(
'Cg9BcHBsaWNhdGlvbkRhdGESUQoLdGV4dG1lc3NhZ2UYASABKAsyLS5jbGllbnRfdG9fc2Vydm'
'VyLkFwcGxpY2F0aW9uRGF0YS5UZXh0TWVzc2FnZUgAUgt0ZXh0bWVzc2FnZRJjChFnZXR1c2Vy'
'Ynl1c2VybmFtZRgCIAEoCzIzLmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkdldF'
'VzZXJCeVVzZXJuYW1lSABSEWdldHVzZXJieXVzZXJuYW1lEmYKEmdldHByZWtleXNieXVzZXJp'
'Cg9BcHBsaWNhdGlvbkRhdGESUQoLdGV4dE1lc3NhZ2UYASABKAsyLS5jbGllbnRfdG9fc2Vydm'
'VyLkFwcGxpY2F0aW9uRGF0YS5UZXh0TWVzc2FnZUgAUgt0ZXh0TWVzc2FnZRJjChFnZXRVc2Vy'
'QnlVc2VybmFtZRgCIAEoCzIzLmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkdldF'
'VzZXJCeVVzZXJuYW1lSABSEWdldFVzZXJCeVVzZXJuYW1lEmYKEmdldFByZWtleXNCeVVzZXJJ'
'ZBgDIAEoCzI0LmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkdldFByZWtleXNCeV'
'VzZXJJZEgAUhJnZXRwcmVrZXlzYnl1c2VyaWQSUQoLZ2V0dXNlcmJ5aWQYBiABKAsyLS5jbGll'
'bnRfdG9fc2VydmVyLkFwcGxpY2F0aW9uRGF0YS5HZXRVc2VyQnlJZEgAUgtnZXR1c2VyYnlpZB'
'JsChR1cGRhdGVnb29nbGVmY210b2tlbhgIIAEoCzI2LmNsaWVudF90b19zZXJ2ZXIuQXBwbGlj'
'YXRpb25EYXRhLlVwZGF0ZUdvb2dsZUZjbVRva2VuSABSFHVwZGF0ZWdvb2dsZWZjbXRva2VuEl'
'EKC2dldGxvY2F0aW9uGAkgASgLMi0uY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEu'
'R2V0TG9jYXRpb25IAFILZ2V0bG9jYXRpb24SaQoTZ2V0Y3VycmVudHBsYW5pbmZvcxgKIAEoCz'
'VzZXJJZEgAUhJnZXRQcmVrZXlzQnlVc2VySWQSUQoLZ2V0VXNlckJ5SWQYBiABKAsyLS5jbGll'
'bnRfdG9fc2VydmVyLkFwcGxpY2F0aW9uRGF0YS5HZXRVc2VyQnlJZEgAUgtnZXRVc2VyQnlJZB'
'JsChR1cGRhdGVHb29nbGVGY21Ub2tlbhgIIAEoCzI2LmNsaWVudF90b19zZXJ2ZXIuQXBwbGlj'
'YXRpb25EYXRhLlVwZGF0ZUdvb2dsZUZjbVRva2VuSABSFHVwZGF0ZUdvb2dsZUZjbVRva2VuEl'
'EKC2dldExvY2F0aW9uGAkgASgLMi0uY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEu'
'R2V0TG9jYXRpb25IAFILZ2V0TG9jYXRpb24SaQoTZ2V0Q3VycmVudFBsYW5JbmZvcxgKIAEoCz'
'I1LmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkdldEN1cnJlbnRQbGFuSW5mb3NI'
'AFITZ2V0Y3VycmVudHBsYW5pbmZvcxJXCg1yZWRlZW12b3VjaGVyGAsgASgLMi8uY2xpZW50X3'
'RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEuUmVkZWVtVm91Y2hlckgAUg1yZWRlZW12b3VjaGVy'
'EmMKEWdldGF2YWlsYWJsZXBsYW5zGAwgASgLMjMuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdG'
'lvbkRhdGEuR2V0QXZhaWxhYmxlUGxhbnNIAFIRZ2V0YXZhaWxhYmxlcGxhbnMSVwoNY3JlYXRl'
'dm91Y2hlchgNIAEoCzIvLmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkNyZWF0ZV'
'ZvdWNoZXJIAFINY3JlYXRldm91Y2hlchJRCgtnZXR2b3VjaGVycxgOIAEoCzItLmNsaWVudF90'
'b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkdldFZvdWNoZXJzSABSC2dldHZvdWNoZXJzEmMKEV'
'N3aXRjaHRvcGF5ZWRwbGFuGA8gASgLMjMuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRh'
'dGEuU3dpdGNoVG9QYXllZFBsYW5IAFIRU3dpdGNodG9wYXllZHBsYW4SbwoVZ2V0YWRkYWNjb3'
'VudHNpbnZpdGVzGBAgASgLMjcuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEuR2V0'
'QWRkQWNjb3VudHNJbnZpdGVzSABSFWdldGFkZGFjY291bnRzaW52aXRlcxJsChRyZWRlZW1hZG'
'RpdGlvbmFsY29kZRgRIAEoCzI2LmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLlJl'
'ZGVlbUFkZGl0aW9uYWxDb2RlSABSFHJlZGVlbWFkZGl0aW9uYWxjb2RlEmwKFHJlbW92ZWFkZG'
'l0aW9uYWx1c2VyGBIgASgLMjYuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEuUmVt'
'b3ZlQWRkaXRpb25hbFVzZXJIAFIUcmVtb3ZlYWRkaXRpb25hbHVzZXISYwoRdXBkYXRlcGxhbm'
'AFITZ2V0Q3VycmVudFBsYW5JbmZvcxJXCg1yZWRlZW1Wb3VjaGVyGAsgASgLMi8uY2xpZW50X3'
'RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEuUmVkZWVtVm91Y2hlckgAUg1yZWRlZW1Wb3VjaGVy'
'EmMKEWdldEF2YWlsYWJsZVBsYW5zGAwgASgLMjMuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdG'
'lvbkRhdGEuR2V0QXZhaWxhYmxlUGxhbnNIAFIRZ2V0QXZhaWxhYmxlUGxhbnMSVwoNY3JlYXRl'
'Vm91Y2hlchgNIAEoCzIvLmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkNyZWF0ZV'
'ZvdWNoZXJIAFINY3JlYXRlVm91Y2hlchJRCgtnZXRWb3VjaGVycxgOIAEoCzItLmNsaWVudF90'
'b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLkdldFZvdWNoZXJzSABSC2dldFZvdWNoZXJzEmMKEX'
'N3aXRjaHRvUGF5ZWRQbGFuGA8gASgLMjMuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRh'
'dGEuU3dpdGNoVG9QYXllZFBsYW5IAFIRc3dpdGNodG9QYXllZFBsYW4SbwoVZ2V0QWRkYWNjb3'
'VudHNJbnZpdGVzGBAgASgLMjcuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEuR2V0'
'QWRkQWNjb3VudHNJbnZpdGVzSABSFWdldEFkZGFjY291bnRzSW52aXRlcxJsChRyZWRlZW1BZG'
'RpdGlvbmFsQ29kZRgRIAEoCzI2LmNsaWVudF90b19zZXJ2ZXIuQXBwbGljYXRpb25EYXRhLlJl'
'ZGVlbUFkZGl0aW9uYWxDb2RlSABSFHJlZGVlbUFkZGl0aW9uYWxDb2RlEmwKFHJlbW92ZUFkZG'
'l0aW9uYWxVc2VyGBIgASgLMjYuY2xpZW50X3RvX3NlcnZlci5BcHBsaWNhdGlvbkRhdGEuUmVt'
'b3ZlQWRkaXRpb25hbFVzZXJIAFIUcmVtb3ZlQWRkaXRpb25hbFVzZXISYwoRdXBkYXRlUGxhbk'
'9wdGlvbnMYEyABKAsyMy5jbGllbnRfdG9fc2VydmVyLkFwcGxpY2F0aW9uRGF0YS5VcGRhdGVQ'
'bGFuT3B0aW9uc0gAUhF1cGRhdGVwbGFub3B0aW9ucxJUCgxkb3dubG9hZGRvbmUYFCABKAsyLi'
'bGFuT3B0aW9uc0gAUhF1cGRhdGVQbGFuT3B0aW9ucxJUCgxkb3dubG9hZERvbmUYFCABKAsyLi'
'5jbGllbnRfdG9fc2VydmVyLkFwcGxpY2F0aW9uRGF0YS5Eb3dubG9hZERvbmVIAFIMZG93bmxv'
'YWRkb25lEnUKF2dldHNpZ25lZHByZWtleWJ5dXNlcmlkGBYgASgLMjkuY2xpZW50X3RvX3Nlcn'
'Zlci5BcHBsaWNhdGlvbkRhdGEuR2V0U2lnbmVkUHJlS2V5QnlVc2VySWRIAFIXZ2V0c2lnbmVk'
'cHJla2V5Ynl1c2VyaWQSZgoSdXBkYXRlc2lnbmVkcHJla2V5GBcgASgLMjQuY2xpZW50X3RvX3'
'NlcnZlci5BcHBsaWNhdGlvbkRhdGEuVXBkYXRlU2lnbmVkUHJlS2V5SABSEnVwZGF0ZXNpZ25l'
'ZHByZWtleRJXCg1kZWxldGVhY2NvdW50GBggASgLMi8uY2xpZW50X3RvX3NlcnZlci5BcHBsaW'
'NhdGlvbkRhdGEuRGVsZXRlQWNjb3VudEgAUg1kZWxldGVhY2NvdW50Ek4KCnJlcG9ydHVzZXIY'
'YWREb25lEnUKF2dldFNpZ25lZFByZWtleUJ5VXNlcmlkGBYgASgLMjkuY2xpZW50X3RvX3Nlcn'
'Zlci5BcHBsaWNhdGlvbkRhdGEuR2V0U2lnbmVkUHJlS2V5QnlVc2VySWRIAFIXZ2V0U2lnbmVk'
'UHJla2V5QnlVc2VyaWQSZgoSdXBkYXRlU2lnbmVkUHJla2V5GBcgASgLMjQuY2xpZW50X3RvX3'
'NlcnZlci5BcHBsaWNhdGlvbkRhdGEuVXBkYXRlU2lnbmVkUHJlS2V5SABSEnVwZGF0ZVNpZ25l'
'ZFByZWtleRJXCg1kZWxldGVBY2NvdW50GBggASgLMi8uY2xpZW50X3RvX3NlcnZlci5BcHBsaW'
'NhdGlvbkRhdGEuRGVsZXRlQWNjb3VudEgAUg1kZWxldGVBY2NvdW50Ek4KCnJlcG9ydFVzZXIY'
'GSABKAsyLC5jbGllbnRfdG9fc2VydmVyLkFwcGxpY2F0aW9uRGF0YS5SZXBvcnRVc2VySABSCn'
'JlcG9ydHVzZXIaagoLVGV4dE1lc3NhZ2USFwoHdXNlcl9pZBgBIAEoA1IGdXNlcklkEhIKBGJv'
'ZHkYAyABKAxSBGJvZHkSIAoJcHVzaF9kYXRhGAQgASgMSABSCHB1c2hEYXRhiAEBQgwKCl9wdX'
'NoX2RhdGEaLwoRR2V0VXNlckJ5VXNlcm5hbWUSGgoIdXNlcm5hbWUYASABKAlSCHVzZXJuYW1l'
'GjUKFFVwZGF0ZUdvb2dsZUZjbVRva2VuEh0KCmdvb2dsZV9mY20YASABKAlSCWdvb2dsZUZjbR'
'omCgtHZXRVc2VyQnlJZBIXCgd1c2VyX2lkGAEgASgDUgZ1c2VySWQaKQoNUmVkZWVtVm91Y2hl'
'chIYCgd2b3VjaGVyGAEgASgJUgd2b3VjaGVyGnAKEVN3aXRjaFRvUGF5ZWRQbGFuEhcKB3BsYW'
'5faWQYASABKAlSBnBsYW5JZBIfCgtwYXlfbW9udGhseRgCIAEoCFIKcGF5TW9udGhseRIhCgxh'
'dXRvX3JlbmV3YWwYAyABKAhSC2F1dG9SZW5ld2FsGjYKEVVwZGF0ZVBsYW5PcHRpb25zEiEKDG'
'F1dG9fcmVuZXdhbBgBIAEoCFILYXV0b1JlbmV3YWwaMAoNQ3JlYXRlVm91Y2hlchIfCgt2YWx1'
'ZV9jZW50cxgBIAEoDVIKdmFsdWVDZW50cxoNCgtHZXRMb2NhdGlvbhoNCgtHZXRWb3VjaGVycx'
'oTChFHZXRBdmFpbGFibGVQbGFucxoXChVHZXRBZGRBY2NvdW50c0ludml0ZXMaFQoTR2V0Q3Vy'
'cmVudFBsYW5JbmZvcxo3ChRSZWRlZW1BZGRpdGlvbmFsQ29kZRIfCgtpbnZpdGVfY29kZRgCIA'
'EoCVIKaW52aXRlQ29kZRovChRSZW1vdmVBZGRpdGlvbmFsVXNlchIXCgd1c2VyX2lkGAEgASgD'
'UgZ1c2VySWQaLQoSR2V0UHJla2V5c0J5VXNlcklkEhcKB3VzZXJfaWQYASABKANSBnVzZXJJZB'
'oyChdHZXRTaWduZWRQcmVLZXlCeVVzZXJJZBIXCgd1c2VyX2lkGAEgASgDUgZ1c2VySWQamwEK'
'ElVwZGF0ZVNpZ25lZFByZUtleRIoChBzaWduZWRfcHJla2V5X2lkGAEgASgDUg5zaWduZWRQcm'
'VrZXlJZBIjCg1zaWduZWRfcHJla2V5GAIgASgMUgxzaWduZWRQcmVrZXkSNgoXc2lnbmVkX3By'
'ZWtleV9zaWduYXR1cmUYAyABKAxSFXNpZ25lZFByZWtleVNpZ25hdHVyZRo1CgxEb3dubG9hZE'
'RvbmUSJQoOZG93bmxvYWRfdG9rZW4YASABKAxSDWRvd25sb2FkVG9rZW4aTgoKUmVwb3J0VXNl'
'chIoChByZXBvcnRlZF91c2VyX2lkGAEgASgDUg5yZXBvcnRlZFVzZXJJZBIWCgZyZWFzb24YAi'
'ABKAlSBnJlYXNvbhoPCg1EZWxldGVBY2NvdW50QhEKD0FwcGxpY2F0aW9uRGF0YQ==');
'JlcG9ydFVzZXISWgoOY2hhbmdlVXNlcm5hbWUYGiABKAsyMC5jbGllbnRfdG9fc2VydmVyLkFw'
'cGxpY2F0aW9uRGF0YS5DaGFuZ2VVc2VybmFtZUgAUg5jaGFuZ2VVc2VybmFtZRpqCgtUZXh0TW'
'Vzc2FnZRIXCgd1c2VyX2lkGAEgASgDUgZ1c2VySWQSEgoEYm9keRgDIAEoDFIEYm9keRIgCglw'
'dXNoX2RhdGEYBCABKAxIAFIIcHVzaERhdGGIAQFCDAoKX3B1c2hfZGF0YRovChFHZXRVc2VyQn'
'lVc2VybmFtZRIaCgh1c2VybmFtZRgBIAEoCVIIdXNlcm5hbWUaLAoOQ2hhbmdlVXNlcm5hbWUS'
'GgoIdXNlcm5hbWUYASABKAlSCHVzZXJuYW1lGjUKFFVwZGF0ZUdvb2dsZUZjbVRva2VuEh0KCm'
'dvb2dsZV9mY20YASABKAlSCWdvb2dsZUZjbRomCgtHZXRVc2VyQnlJZBIXCgd1c2VyX2lkGAEg'
'ASgDUgZ1c2VySWQaKQoNUmVkZWVtVm91Y2hlchIYCgd2b3VjaGVyGAEgASgJUgd2b3VjaGVyGn'
'AKEVN3aXRjaFRvUGF5ZWRQbGFuEhcKB3BsYW5faWQYASABKAlSBnBsYW5JZBIfCgtwYXlfbW9u'
'dGhseRgCIAEoCFIKcGF5TW9udGhseRIhCgxhdXRvX3JlbmV3YWwYAyABKAhSC2F1dG9SZW5ld2'
'FsGjYKEVVwZGF0ZVBsYW5PcHRpb25zEiEKDGF1dG9fcmVuZXdhbBgBIAEoCFILYXV0b1JlbmV3'
'YWwaMAoNQ3JlYXRlVm91Y2hlchIfCgt2YWx1ZV9jZW50cxgBIAEoDVIKdmFsdWVDZW50cxoNCg'
'tHZXRMb2NhdGlvbhoNCgtHZXRWb3VjaGVycxoTChFHZXRBdmFpbGFibGVQbGFucxoXChVHZXRB'
'ZGRBY2NvdW50c0ludml0ZXMaFQoTR2V0Q3VycmVudFBsYW5JbmZvcxo3ChRSZWRlZW1BZGRpdG'
'lvbmFsQ29kZRIfCgtpbnZpdGVfY29kZRgCIAEoCVIKaW52aXRlQ29kZRovChRSZW1vdmVBZGRp'
'dGlvbmFsVXNlchIXCgd1c2VyX2lkGAEgASgDUgZ1c2VySWQaLQoSR2V0UHJla2V5c0J5VXNlck'
'lkEhcKB3VzZXJfaWQYASABKANSBnVzZXJJZBoyChdHZXRTaWduZWRQcmVLZXlCeVVzZXJJZBIX'
'Cgd1c2VyX2lkGAEgASgDUgZ1c2VySWQamwEKElVwZGF0ZVNpZ25lZFByZUtleRIoChBzaWduZW'
'RfcHJla2V5X2lkGAEgASgDUg5zaWduZWRQcmVrZXlJZBIjCg1zaWduZWRfcHJla2V5GAIgASgM'
'UgxzaWduZWRQcmVrZXkSNgoXc2lnbmVkX3ByZWtleV9zaWduYXR1cmUYAyABKAxSFXNpZ25lZF'
'ByZWtleVNpZ25hdHVyZRo1CgxEb3dubG9hZERvbmUSJQoOZG93bmxvYWRfdG9rZW4YASABKAxS'
'DWRvd25sb2FkVG9rZW4aTgoKUmVwb3J0VXNlchIoChByZXBvcnRlZF91c2VyX2lkGAEgASgDUg'
'5yZXBvcnRlZFVzZXJJZBIWCgZyZWFzb24YAiABKAlSBnJlYXNvbhoPCg1EZWxldGVBY2NvdW50'
'QhEKD0FwcGxpY2F0aW9uRGF0YQ==');
@$core.Deprecated('Use responseDescriptor instead')
const Response$json = {

View file

@ -1052,6 +1052,7 @@ class EncryptedContent_ContactUpdate extends $pb.GeneratedMessage {
factory EncryptedContent_ContactUpdate({
EncryptedContent_ContactUpdate_Type? type,
$core.List<$core.int>? avatarSvgCompressed,
$core.String? username,
$core.String? displayName,
}) {
final $result = create();
@ -1061,6 +1062,9 @@ class EncryptedContent_ContactUpdate extends $pb.GeneratedMessage {
if (avatarSvgCompressed != null) {
$result.avatarSvgCompressed = avatarSvgCompressed;
}
if (username != null) {
$result.username = username;
}
if (displayName != null) {
$result.displayName = displayName;
}
@ -1073,7 +1077,8 @@ class EncryptedContent_ContactUpdate extends $pb.GeneratedMessage {
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EncryptedContent.ContactUpdate', createEmptyInstance: create)
..e<EncryptedContent_ContactUpdate_Type>(1, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: EncryptedContent_ContactUpdate_Type.REQUEST, valueOf: EncryptedContent_ContactUpdate_Type.valueOf, enumValues: EncryptedContent_ContactUpdate_Type.values)
..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'avatarSvgCompressed', $pb.PbFieldType.OY, protoName: 'avatarSvgCompressed')
..aOS(3, _omitFieldNames ? '' : 'displayName', protoName: 'displayName')
..aOS(3, _omitFieldNames ? '' : 'username')
..aOS(4, _omitFieldNames ? '' : 'displayName', protoName: 'displayName')
..hasRequiredFields = false
;
@ -1117,13 +1122,22 @@ class EncryptedContent_ContactUpdate extends $pb.GeneratedMessage {
void clearAvatarSvgCompressed() => clearField(2);
@$pb.TagNumber(3)
$core.String get displayName => $_getSZ(2);
$core.String get username => $_getSZ(2);
@$pb.TagNumber(3)
set displayName($core.String v) { $_setString(2, v); }
set username($core.String v) { $_setString(2, v); }
@$pb.TagNumber(3)
$core.bool hasDisplayName() => $_has(2);
$core.bool hasUsername() => $_has(2);
@$pb.TagNumber(3)
void clearDisplayName() => clearField(3);
void clearUsername() => clearField(3);
@$pb.TagNumber(4)
$core.String get displayName => $_getSZ(3);
@$pb.TagNumber(4)
set displayName($core.String v) { $_setString(3, v); }
@$pb.TagNumber(4)
$core.bool hasDisplayName() => $_has(3);
@$pb.TagNumber(4)
void clearDisplayName() => clearField(4);
}
class EncryptedContent_PushKeys extends $pb.GeneratedMessage {

View file

@ -310,11 +310,13 @@ const EncryptedContent_ContactUpdate$json = {
'2': [
{'1': 'type', '3': 1, '4': 1, '5': 14, '6': '.EncryptedContent.ContactUpdate.Type', '10': 'type'},
{'1': 'avatarSvgCompressed', '3': 2, '4': 1, '5': 12, '9': 0, '10': 'avatarSvgCompressed', '17': true},
{'1': 'displayName', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'displayName', '17': true},
{'1': 'username', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'username', '17': true},
{'1': 'displayName', '3': 4, '4': 1, '5': 9, '9': 2, '10': 'displayName', '17': true},
],
'4': [EncryptedContent_ContactUpdate_Type$json],
'8': [
{'1': '_avatarSvgCompressed'},
{'1': '_username'},
{'1': '_displayName'},
],
};
@ -418,21 +420,22 @@ final $typed_data.Uint8List encryptedContentDescriptor = $convert.base64Decode(
'IoCg90YXJnZXRNZXNzYWdlSWQYAiABKAlSD3RhcmdldE1lc3NhZ2VJZCI2CgRUeXBlEgwKCFJF'
'T1BFTkVEEAASCgoGU1RPUkVEEAESFAoQREVDUllQVElPTl9FUlJPUhACGngKDkNvbnRhY3RSZX'
'F1ZXN0EjkKBHR5cGUYASABKA4yJS5FbmNyeXB0ZWRDb250ZW50LkNvbnRhY3RSZXF1ZXN0LlR5'
'cGVSBHR5cGUiKwoEVHlwZRILCgdSRVFVRVNUEAASCgoGUkVKRUNUEAESCgoGQUNDRVBUEAIa8A'
'EKDUNvbnRhY3RVcGRhdGUSOAoEdHlwZRgBIAEoDjIkLkVuY3J5cHRlZENvbnRlbnQuQ29udGFj'
'cGVSBHR5cGUiKwoEVHlwZRILCgdSRVFVRVNUEAASCgoGUkVKRUNUEAESCgoGQUNDRVBUEAIang'
'IKDUNvbnRhY3RVcGRhdGUSOAoEdHlwZRgBIAEoDjIkLkVuY3J5cHRlZENvbnRlbnQuQ29udGFj'
'dFVwZGF0ZS5UeXBlUgR0eXBlEjUKE2F2YXRhclN2Z0NvbXByZXNzZWQYAiABKAxIAFITYXZhdG'
'FyU3ZnQ29tcHJlc3NlZIgBARIlCgtkaXNwbGF5TmFtZRgDIAEoCUgBUgtkaXNwbGF5TmFtZYgB'
'ASIfCgRUeXBlEgsKB1JFUVVFU1QQABIKCgZVUERBVEUQAUIWChRfYXZhdGFyU3ZnQ29tcHJlc3'
'NlZEIOCgxfZGlzcGxheU5hbWUa1QEKCFB1c2hLZXlzEjMKBHR5cGUYASABKA4yHy5FbmNyeXB0'
'ZWRDb250ZW50LlB1c2hLZXlzLlR5cGVSBHR5cGUSGQoFa2V5SWQYAiABKANIAFIFa2V5SWSIAQ'
'ESFQoDa2V5GAMgASgMSAFSA2tleYgBARIhCgljcmVhdGVkQXQYBCABKANIAlIJY3JlYXRlZEF0'
'iAEBIh8KBFR5cGUSCwoHUkVRVUVTVBAAEgoKBlVQREFURRABQggKBl9rZXlJZEIGCgRfa2V5Qg'
'wKCl9jcmVhdGVkQXQahwEKCUZsYW1lU3luYxIiCgxmbGFtZUNvdW50ZXIYASABKANSDGZsYW1l'
'Q291bnRlchI2ChZsYXN0RmxhbWVDb3VudGVyQ2hhbmdlGAIgASgDUhZsYXN0RmxhbWVDb3VudG'
'VyQ2hhbmdlEh4KCmJlc3RGcmllbmQYAyABKAhSCmJlc3RGcmllbmRCCgoIX2dyb3VwSWRCDwoN'
'X2lzRGlyZWN0Q2hhdEIXChVfc2VuZGVyUHJvZmlsZUNvdW50ZXJCEAoOX21lc3NhZ2VVcGRhdG'
'VCCAoGX21lZGlhQg4KDF9tZWRpYVVwZGF0ZUIQCg5fY29udGFjdFVwZGF0ZUIRCg9fY29udGFj'
'dFJlcXVlc3RCDAoKX2ZsYW1lU3luY0ILCglfcHVzaEtleXNCCwoJX3JlYWN0aW9uQg4KDF90ZX'
'h0TWVzc2FnZUIOCgxfZ3JvdXBDcmVhdGVCDAoKX2dyb3VwSm9pbkIOCgxfZ3JvdXBVcGRhdGVC'
'FwoVX3Jlc2VuZEdyb3VwUHVibGljS2V5');
'FyU3ZnQ29tcHJlc3NlZIgBARIfCgh1c2VybmFtZRgDIAEoCUgBUgh1c2VybmFtZYgBARIlCgtk'
'aXNwbGF5TmFtZRgEIAEoCUgCUgtkaXNwbGF5TmFtZYgBASIfCgRUeXBlEgsKB1JFUVVFU1QQAB'
'IKCgZVUERBVEUQAUIWChRfYXZhdGFyU3ZnQ29tcHJlc3NlZEILCglfdXNlcm5hbWVCDgoMX2Rp'
'c3BsYXlOYW1lGtUBCghQdXNoS2V5cxIzCgR0eXBlGAEgASgOMh8uRW5jcnlwdGVkQ29udGVudC'
'5QdXNoS2V5cy5UeXBlUgR0eXBlEhkKBWtleUlkGAIgASgDSABSBWtleUlkiAEBEhUKA2tleRgD'
'IAEoDEgBUgNrZXmIAQESIQoJY3JlYXRlZEF0GAQgASgDSAJSCWNyZWF0ZWRBdIgBASIfCgRUeX'
'BlEgsKB1JFUVVFU1QQABIKCgZVUERBVEUQAUIICgZfa2V5SWRCBgoEX2tleUIMCgpfY3JlYXRl'
'ZEF0GocBCglGbGFtZVN5bmMSIgoMZmxhbWVDb3VudGVyGAEgASgDUgxmbGFtZUNvdW50ZXISNg'
'oWbGFzdEZsYW1lQ291bnRlckNoYW5nZRgCIAEoA1IWbGFzdEZsYW1lQ291bnRlckNoYW5nZRIe'
'CgpiZXN0RnJpZW5kGAMgASgIUgpiZXN0RnJpZW5kQgoKCF9ncm91cElkQg8KDV9pc0RpcmVjdE'
'NoYXRCFwoVX3NlbmRlclByb2ZpbGVDb3VudGVyQhAKDl9tZXNzYWdlVXBkYXRlQggKBl9tZWRp'
'YUIOCgxfbWVkaWFVcGRhdGVCEAoOX2NvbnRhY3RVcGRhdGVCEQoPX2NvbnRhY3RSZXF1ZXN0Qg'
'wKCl9mbGFtZVN5bmNCCwoJX3B1c2hLZXlzQgsKCV9yZWFjdGlvbkIOCgxfdGV4dE1lc3NhZ2VC'
'DgoMX2dyb3VwQ3JlYXRlQgwKCl9ncm91cEpvaW5CDgoMX2dyb3VwVXBkYXRlQhcKFV9yZXNlbm'
'RHcm91cFB1YmxpY0tleQ==');

View file

@ -148,7 +148,8 @@ message EncryptedContent {
Type type = 1;
optional bytes avatarSvgCompressed = 2;
optional string displayName = 3;
optional string username = 3;
optional string displayName = 4;
}
message PushKeys {

View file

@ -490,7 +490,7 @@ class ApiService {
Future<Response_UserData?> getUserById(int userId) async {
final get = ApplicationData_GetUserById()..userId = Int64(userId);
final appData = ApplicationData()..getuserbyid = get;
final appData = ApplicationData()..getUserById = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req);
if (res.isSuccess) {
@ -504,21 +504,21 @@ class ApiService {
Future<Result> downloadDone(List<int> token) async {
final get = ApplicationData_DownloadDone()..downloadToken = token;
final appData = ApplicationData()..downloaddone = get;
final appData = ApplicationData()..downloadDone = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req, ensureRetransmission: true);
}
Future<Result> getCurrentLocation() async {
final get = ApplicationData_GetLocation();
final appData = ApplicationData()..getlocation = get;
final appData = ApplicationData()..getLocation = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Response_UserData?> getUserData(String username) async {
final get = ApplicationData_GetUserByUsername()..username = username;
final appData = ApplicationData()..getuserbyusername = get;
final appData = ApplicationData()..getUserByUsername = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req);
if (res.isSuccess) {
@ -532,7 +532,7 @@ class ApiService {
Future<Response_PlanBallance?> getPlanBallance() async {
final get = ApplicationData_GetCurrentPlanInfos();
final appData = ApplicationData()..getcurrentplaninfos = get;
final appData = ApplicationData()..getCurrentPlanInfos = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req);
if (res.isSuccess) {
@ -546,7 +546,7 @@ class ApiService {
Future<Response_Vouchers?> getVoucherList() async {
final get = ApplicationData_GetVouchers();
final appData = ApplicationData()..getvouchers = get;
final appData = ApplicationData()..getVouchers = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req);
if (res.isSuccess) {
@ -560,7 +560,7 @@ class ApiService {
Future<List<Response_AddAccountsInvite>?> getAdditionalUserInvites() async {
final get = ApplicationData_GetAddAccountsInvites();
final appData = ApplicationData()..getaddaccountsinvites = get;
final appData = ApplicationData()..getAddaccountsInvites = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req);
if (res.isSuccess) {
@ -574,21 +574,21 @@ class ApiService {
Future<Result> updatePlanOptions(bool autoRenewal) async {
final get = ApplicationData_UpdatePlanOptions()..autoRenewal = autoRenewal;
final appData = ApplicationData()..updateplanoptions = get;
final appData = ApplicationData()..updatePlanOptions = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Result> removeAdditionalUser(Int64 userId) async {
final get = ApplicationData_RemoveAdditionalUser()..userId = userId;
final appData = ApplicationData()..removeadditionaluser = get;
final appData = ApplicationData()..removeAdditionalUser = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req, contactId: userId.toInt());
}
Future<Result> buyVoucher(int valueInCents) async {
final get = ApplicationData_CreateVoucher()..valueCents = valueInCents;
final appData = ApplicationData()..createvoucher = get;
final appData = ApplicationData()..createVoucher = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
@ -602,14 +602,14 @@ class ApiService {
..planId = planId
..payMonthly = payMonthly
..autoRenewal = autoRenewal;
final appData = ApplicationData()..switchtopayedplan = get;
final appData = ApplicationData()..switchtoPayedPlan = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Result> redeemVoucher(String voucher) async {
final get = ApplicationData_RedeemVoucher()..voucher = voucher;
final appData = ApplicationData()..redeemvoucher = get;
final appData = ApplicationData()..redeemVoucher = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
@ -618,28 +618,35 @@ class ApiService {
final get = ApplicationData_ReportUser()
..reportedUserId = Int64(userId)
..reason = reason;
final appData = ApplicationData()..reportuser = get;
final appData = ApplicationData()..reportUser = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Result> deleteAccount() async {
final get = ApplicationData_DeleteAccount();
final appData = ApplicationData()..deleteaccount = get;
final appData = ApplicationData()..deleteAccount = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Result> redeemUserInviteCode(String inviteCode) async {
final get = ApplicationData_RedeemAdditionalCode()..inviteCode = inviteCode;
final appData = ApplicationData()..redeemadditionalcode = get;
final appData = ApplicationData()..redeemAdditionalCode = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Result> updateFCMToken(String googleFcm) async {
final get = ApplicationData_UpdateGoogleFcmToken()..googleFcm = googleFcm;
final appData = ApplicationData()..updategooglefcmtoken = get;
final appData = ApplicationData()..updateGoogleFcmToken = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
Future<Result> changeUsername(String username) async {
final get = ApplicationData_ChangeUsername()..username = username;
final appData = ApplicationData()..changeUsername = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
@ -653,7 +660,7 @@ class ApiService {
..signedPrekeyId = Int64(signedPreKeyId)
..signedPrekey = signedPreKey
..signedPrekeySignature = signedPreKeySignature;
final appData = ApplicationData()..updatesignedprekey = get;
final appData = ApplicationData()..updateSignedPrekey = get;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req);
}
@ -661,7 +668,7 @@ class ApiService {
Future<Response_SignedPreKey?> getSignedKeyByUserId(int userId) async {
final get = ApplicationData_GetSignedPreKeyByUserId()
..userId = Int64(userId);
final appData = ApplicationData()..getsignedprekeybyuserid = get;
final appData = ApplicationData()..getSignedPrekeyByUserid = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req, contactId: userId);
if (res.isSuccess) {
@ -675,7 +682,7 @@ class ApiService {
Future<OtherPreKeys?> getPreKeysByUserId(int userId) async {
final get = ApplicationData_GetPrekeysByUserId()..userId = Int64(userId);
final appData = ApplicationData()..getprekeysbyuserid = get;
final appData = ApplicationData()..getPrekeysByUserId = get;
final req = createClientToServerFromApplicationData(appData);
final res = await sendRequestSync(req, contactId: userId);
if (res.isSuccess) {
@ -709,8 +716,7 @@ class ApiService {
if (pushData != null) {
testMessage.pushData = pushData;
}
final appData = ApplicationData()..textmessage = testMessage;
final appData = ApplicationData()..textMessage = testMessage;
final req = createClientToServerFromApplicationData(appData);
return sendRequestSync(req, contactId: target);
}

View file

@ -99,6 +99,7 @@ Future<void> handleContactUpdate(
Log.info('Got a contact update $fromUserId');
if (contactUpdate.hasAvatarSvgCompressed() &&
contactUpdate.hasDisplayName() &&
contactUpdate.hasUsername() &&
senderProfileCounter != null) {
await twonlyDB.contactsDao.updateContact(
fromUserId,
@ -106,6 +107,7 @@ Future<void> handleContactUpdate(
avatarSvgCompressed:
Value(Uint8List.fromList(contactUpdate.avatarSvgCompressed)),
displayName: Value(contactUpdate.displayName),
username: Value(contactUpdate.username),
senderProfileCounter: Value(senderProfileCounter),
),
);
@ -153,9 +155,11 @@ Future<int?> checkForProfileUpdate(
if (contact.senderProfileCounter < senderProfileCounter) {
await sendCipherText(
fromUserId,
EncryptedContent()
..contactUpdate = (EncryptedContent_ContactUpdate()
..type = EncryptedContent_ContactUpdate_Type.REQUEST),
EncryptedContent(
contactUpdate: EncryptedContent_ContactUpdate(
type: EncryptedContent_ContactUpdate_Type.REQUEST,
),
),
);
}
}

View file

@ -88,7 +88,7 @@ Future<void> handleUploadStatusUpdate(TaskStatusUpdate update) async {
await twonlyDB.messagesDao.getMessagesByMediaId(media.mediaId);
for (final message in messages) {
final contacts =
await twonlyDB.groupsDao.getGroupMembers(message.groupId);
await twonlyDB.groupsDao.getGroupNonLeftMembers(message.groupId);
for (final contact in contacts) {
await twonlyDB.messagesDao.handleMessageAckByServer(
contact.contactId,

View file

@ -159,7 +159,7 @@ Future<void> _createUploadRequest(MediaFileService media) async {
for (final message in messages) {
final groupMembers =
await twonlyDB.groupsDao.getGroupMembers(message.groupId);
await twonlyDB.groupsDao.getGroupNonLeftMembers(message.groupId);
if (media.mediaFile.reuploadRequestedBy == null) {
await twonlyDB.groupsDao.incFlameCounter(

View file

@ -199,7 +199,7 @@ Future<void> sendCipherTextToGroup(
pb.EncryptedContent encryptedContent, {
String? messageId,
}) async {
final groupMembers = await twonlyDB.groupsDao.getGroupMembers(groupId);
final groupMembers = await twonlyDB.groupsDao.getGroupNonLeftMembers(groupId);
await twonlyDB.groupsDao.increaseLastMessageExchange(groupId, DateTime.now());
@ -291,6 +291,7 @@ Future<void> notifyContactsAboutProfileChange({int? onlyToContact}) async {
type: pb.EncryptedContent_ContactUpdate_Type.UPDATE,
avatarSvgCompressed: gzip.encode(utf8.encode(gUser.avatarSvg!)),
displayName: gUser.displayName,
username: gUser.username,
),
);

View file

@ -36,7 +36,7 @@ Future<void> syncFlameCounters() async {
if (flameCounter < 1 && bestFriend.groupId != group.groupId) continue;
final groupMembers =
await twonlyDB.groupsDao.getGroupMembers(group.groupId);
await twonlyDB.groupsDao.getGroupNonLeftMembers(group.groupId);
if (groupMembers.length != 1) {
continue; // flame sync is only done for groups of two
}

View file

@ -353,7 +353,7 @@ Future<(int, EncryptedGroupState)?> fetchGroupState(Group group) async {
);
var currentGroupMembers =
await twonlyDB.groupsDao.getGroupMembers(group.groupId);
await twonlyDB.groupsDao.getGroupNonLeftMembers(group.groupId);
// First find and insert NEW members
for (final memberId in memberIds) {
@ -407,7 +407,7 @@ Future<(int, EncryptedGroupState)?> fetchGroupState(Group group) async {
// update the current members list
currentGroupMembers =
await twonlyDB.groupsDao.getGroupMembers(group.groupId);
await twonlyDB.groupsDao.getGroupNonLeftMembers(group.groupId);
for (final member in currentGroupMembers) {
// Member is not any more in the members list

View file

@ -295,8 +295,9 @@ class _ChatMessagesViewState extends State<ChatMessagesView> {
onTap: () async {
if (group.isDirectChat) {
final member =
await twonlyDB.groupsDao.getGroupMembers(group.groupId);
await twonlyDB.groupsDao.getAllGroupMembers(group.groupId);
if (!context.mounted) return;
if (member.isEmpty) return;
await Navigator.push(
context,
MaterialPageRoute(

View file

@ -1,13 +1,15 @@
import 'dart:async';
import 'package:avatar_maker/avatar_maker.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:twonly/src/model/json/userdata.dart';
import 'package:twonly/globals.dart';
import 'package:twonly/src/model/protobuf/api/websocket/error.pb.dart';
import 'package:twonly/src/services/api/messages.dart';
import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/utils/storage.dart';
import 'package:twonly/src/views/components/better_list_title.dart';
import 'package:twonly/src/views/groups/group.view.dart';
import 'package:twonly/src/views/settings/profile/modify_avatar.view.dart';
class ProfileView extends StatefulWidget {
@ -18,19 +20,12 @@ class ProfileView extends StatefulWidget {
}
class _ProfileViewState extends State<ProfileView> {
UserData? user;
final AvatarMakerController _avatarMakerController =
PersistentAvatarMakerController(customizedPropertyCategories: []);
@override
void initState() {
super.initState();
unawaited(initAsync());
}
Future<void> initAsync() async {
user = await getUser();
setState(() {});
}
Future<void> updateUserDisplayName(String displayName) async {
@ -40,9 +35,38 @@ class _ProfileViewState extends State<ProfileView> {
..avatarCounter = user.avatarCounter + 1;
return user;
});
await notifyContactsAboutProfileChange();
await initAsync();
setState(() {}); // gUser has updated
}
Future<void> _updateUsername(String username) async {
final result = await apiService.changeUsername(username);
if (result.isError) {
if (!mounted) return;
if (result.error == ErrorCode.UsernameAlreadyTaken) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(context.lang.errorUsernameAlreadyTaken),
duration: const Duration(seconds: 3),
),
);
return;
}
showNetworkIssue(context);
return;
}
await updateUserdata((user) {
user
..username = username
..avatarCounter = user.avatarCounter + 1;
return user;
});
await notifyContactsAboutProfileChange();
setState(() {}); // gUser has updated
}
@override
@ -82,13 +106,45 @@ class _ProfileViewState extends State<ProfileView> {
),
const SizedBox(height: 20),
const Divider(),
BetterListTile(
leading: const Padding(
padding: EdgeInsets.only(right: 5, left: 1),
child: FaIcon(
FontAwesomeIcons.at,
size: 20,
),
),
text: context.lang.registerUsernameDecoration,
subtitle: Text(gUser.username),
onTap: () async {
final username = await showDisplayNameChangeDialog(
context,
gUser.username,
context.lang.registerUsernameDecoration,
context.lang.registerUsernameDecoration,
maxLength: 12,
inputFormatters: [
LengthLimitingTextInputFormatter(12),
FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z]')),
],
);
if (context.mounted && username != null && username != '') {
await _updateUsername(username);
}
},
),
BetterListTile(
icon: FontAwesomeIcons.userPen,
text: context.lang.settingsProfileEditDisplayName,
subtitle: (user == null) ? null : Text(user!.displayName),
subtitle: Text(gUser.displayName),
onTap: () async {
final displayName =
await showDisplayNameChangeDialog(context, user!.displayName);
final displayName = await showDisplayNameChangeDialog(
context,
gUser.displayName,
context.lang.settingsProfileEditDisplayName,
context.lang.settingsProfileEditDisplayNameNew,
maxLength: 30,
);
if (context.mounted && displayName != null && displayName != '') {
await updateUserDisplayName(displayName);
}
@ -103,34 +159,38 @@ class _ProfileViewState extends State<ProfileView> {
Future<String?> showDisplayNameChangeDialog(
BuildContext context,
String currentName,
) {
String title,
String hintText, {
List<TextInputFormatter>? inputFormatters,
int? maxLength,
}) {
final controller = TextEditingController(text: currentName);
return showDialog<String>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text(context.lang.settingsProfileEditDisplayName),
title: Text(title),
content: TextField(
controller: controller,
autofocus: true,
maxLength: 30,
inputFormatters: inputFormatters,
maxLength: maxLength,
decoration: InputDecoration(
hintText: context.lang.settingsProfileEditDisplayNameNew,
hintText: hintText,
),
),
actions: <Widget>[
TextButton(
child: Text(context.lang.cancel),
onPressed: () {
Navigator.of(context).pop(); // Close the dialog
Navigator.of(context).pop();
},
),
TextButton(
child: Text(context.lang.ok),
onPressed: () {
Navigator.of(context)
.pop(controller.text); // Return the input text
Navigator.of(context).pop(controller.text);
},
),
],