grant trial to users in their first week

pull/795/head
ggurdin 2 years ago
parent 19ef30fa1e
commit 749daca14b

@ -66,8 +66,10 @@ android {
buildTypes { buildTypes {
debug { debug {
signingConfig signingConfigs.debug signingConfig signingConfigs.debug
applicationIdSuffix ".debug" // #Pangea - this causes errors with android debug build
versionNameSuffix "-debug" // applicationIdSuffix ".debug"
// versionNameSuffix "-debug"
// Pangea#
} }
release { release {
signingConfig signingConfigs.release signingConfig signingConfigs.release

@ -3339,7 +3339,12 @@
"downloadTxtFile": "Download Text File", "downloadTxtFile": "Download Text File",
"downloadCSVFile": "Download CSV File", "downloadCSVFile": "Download CSV File",
"promotionalSubscriptionDesc": "You currently have a lifetime promotional subscription. Message support@pangea.chat for help changing your subscription.", "promotionalSubscriptionDesc": "You currently have a lifetime promotional subscription. Message support@pangea.chat for help changing your subscription.",
"originalSubscriptionPlatform": "Subscription purchased through", "originalSubscriptionPlatform": "Subscription purchased through {purchasePlatform}",
"@originalSubscriptionPlatform": {
"placeholders": {
"purchasePlatform": {}
}
},
"oneWeekTrial": "One Week Trial", "oneWeekTrial": "One Week Trial",
"creatingSpacePleaseWait": "Creating space. Please wait...", "creatingSpacePleaseWait": "Creating space. Please wait...",
"downloadXLSXFile": "Download Excel File", "downloadXLSXFile": "Download Excel File",
@ -3937,5 +3942,11 @@
"searchChatsRooms": "Search for #chats, @users...", "searchChatsRooms": "Search for #chats, @users...",
"groupName": "Group name", "groupName": "Group name",
"createGroupAndInviteUsers": "Create a group and invite users", "createGroupAndInviteUsers": "Create a group and invite users",
"groupCanBeFoundViaSearch": "Group can be found via search" "groupCanBeFoundViaSearch": "Group can be found via search",
"trialExpiration": "Your free trial expires on {expiration}",
"@trialExpiration": {
"placeholders": {
"expiration": {}
}
}
} }

@ -1,11 +1,10 @@
// Dart imports: // Dart imports:
import 'dart:ui'; import 'dart:ui';
// Package imports:
import 'package:matrix/matrix.dart';
// Project imports: // Project imports:
import 'package:fluffychat/pangea/config/environment.dart'; import 'package:fluffychat/pangea/config/environment.dart';
// Package imports:
import 'package:matrix/matrix.dart';
abstract class AppConfig { abstract class AppConfig {
// #Pangea // #Pangea
@ -124,6 +123,7 @@ abstract class AppConfig {
"https://buy.stripe.com/test_bIY6ssd8z5Uz8ec8ww"; "https://buy.stripe.com/test_bIY6ssd8z5Uz8ec8ww";
static String iosPromoCode = static String iosPromoCode =
"https://apps.apple.com/redeem?ctx=offercodes&id=1445118630&code="; "https://apps.apple.com/redeem?ctx=offercodes&id=1445118630&code=";
static String trialSubscriptionId = "pangea_new_user_trial";
// Pangea# // Pangea#
static void loadFromJson(Map<String, dynamic> json) { static void loadFromJson(Map<String, dynamic> json) {

@ -2,17 +2,8 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
// Flutter imports:
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
// Package imports: // Package imports:
import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:http/http.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:url_launcher/url_launcher_string.dart';
// Project imports: // Project imports:
import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/controllers/base_controller.dart'; import 'package:fluffychat/pangea/controllers/base_controller.dart';
@ -26,6 +17,12 @@ import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/firebase_analytics.dart'; import 'package:fluffychat/pangea/utils/firebase_analytics.dart';
import 'package:fluffychat/pangea/widgets/subscription/subscription_paywall.dart'; import 'package:fluffychat/pangea/widgets/subscription/subscription_paywall.dart';
import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/utils/platform_infos.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:http/http.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:url_launcher/url_launcher_string.dart';
class SubscriptionController extends BaseController { class SubscriptionController extends BaseController {
late PangeaController _pangeaController; late PangeaController _pangeaController;
@ -63,6 +60,9 @@ class SubscriptionController extends BaseController {
: MobileSubscriptionInfo(pangeaController: _pangeaController); : MobileSubscriptionInfo(pangeaController: _pangeaController);
await subscription!.configure(); await subscription!.configure();
if (!isSubscribed) {
addNewAccountTrial();
}
initialized = true; initialized = true;
@ -78,6 +78,33 @@ class SubscriptionController extends BaseController {
} }
} }
void addNewAccountTrial() {
// determine when profile was created
final String? profileCreatedAt =
_pangeaController.userController.userModel?.profile?.createdAt;
if (profileCreatedAt == null) {
ErrorHandler.logError(
m: "Null profileCreatedAt in addNewAccountTrial",
s: StackTrace.current,
);
return;
}
final DateTime creationTimestamp = DateTime.parse(profileCreatedAt);
final bool accountIsNew = creationTimestamp.isAfter(
DateTime.now().subtract(const Duration(days: 7)),
);
// if account qualifies, grant trial
if (accountIsNew) {
final int daysRemaining = DateTime.now()
.add(const Duration(days: 7))
.difference(creationTimestamp)
.inDays;
subscription?.setTrial(daysRemaining);
}
}
Future<void> updateCustomerInfo() async { Future<void> updateCustomerInfo() async {
if (subscription == null) { if (subscription == null) {
ErrorHandler.logError( ErrorHandler.logError(
@ -91,8 +118,10 @@ class SubscriptionController extends BaseController {
setState(); setState();
} }
Future<void> showPaywall(BuildContext context, Future<void> showPaywall(
[bool forceShow = false]) async { BuildContext context, [
bool forceShow = false,
]) async {
try { try {
if (!initialized) { if (!initialized) {
await initialize(); await initialize();
@ -160,8 +189,10 @@ class SubscriptionController extends BaseController {
} }
void submitSubscriptionChange( void submitSubscriptionChange(
SubscriptionDetails? selectedSubscription, BuildContext context, SubscriptionDetails? selectedSubscription,
{bool isPromo = false}) async { BuildContext context, {
bool isPromo = false,
}) async {
if (selectedSubscription != null) { if (selectedSubscription != null) {
if (kIsWeb) { if (kIsWeb) {
if (selectedSubscription.duration == null) { if (selectedSubscription.duration == null) {
@ -191,7 +222,9 @@ class SubscriptionController extends BaseController {
} }
try { try {
GoogleAnalytics.beginPurchaseSubscription( GoogleAnalytics.beginPurchaseSubscription(
selectedSubscription, context); selectedSubscription,
context,
);
await Purchases.purchasePackage(selectedSubscription.package!); await Purchases.purchasePackage(selectedSubscription.package!);
GoogleAnalytics.updateUserSubscriptionStatus(true); GoogleAnalytics.updateUserSubscriptionStatus(true);
} catch (err) { } catch (err) {

@ -1,4 +1,5 @@
// Project imports: // Project imports:
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/controllers/subscription_controller.dart'; import 'package:fluffychat/pangea/controllers/subscription_controller.dart';
import 'package:fluffychat/pangea/repo/subscription_repo.dart'; import 'package:fluffychat/pangea/repo/subscription_repo.dart';
@ -45,6 +46,9 @@ class SubscriptionInfo {
allProducts = await SubscriptionRepo.getAllProducts(); allProducts = await SubscriptionRepo.getAllProducts();
} }
bool get isNewUserTrial =>
currentSubscriptionId == AppConfig.trialSubscriptionId;
bool get currentSubscriptionIsPromotional => bool get currentSubscriptionIsPromotional =>
currentSubscriptionId?.startsWith("rc_promo") ?? false; currentSubscriptionId?.startsWith("rc_promo") ?? false;
@ -71,5 +75,16 @@ class SubscriptionInfo {
currentSubscriptionId = null; currentSubscriptionId = null;
} }
void setTrial(int daysRemaining) {
if (currentSubscription != null) return;
expirationDate = DateTime.now().add(Duration(days: daysRemaining));
currentSubscriptionId = AppConfig.trialSubscriptionId;
currentSubscription = SubscriptionDetails(
price: 0,
id: AppConfig.trialSubscriptionId,
periodType: 'trial',
);
}
Future<void> setCustomerInfo() async {} Future<void> setCustomerInfo() async {}
} }

@ -1,12 +1,6 @@
// Dart imports: // Dart imports:
import 'dart:async'; import 'dart:async';
// Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:url_launcher/url_launcher_string.dart';
// Project imports: // Project imports:
import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/config/environment.dart'; import 'package:fluffychat/pangea/config/environment.dart';
@ -15,9 +9,13 @@ import 'package:fluffychat/pangea/controllers/subscription_controller.dart';
import 'package:fluffychat/pangea/pages/settings_subscription/settings_subscription_view.dart'; import 'package:fluffychat/pangea/pages/settings_subscription/settings_subscription_view.dart';
import 'package:fluffychat/pangea/utils/subscription_app_id.dart'; import 'package:fluffychat/pangea/utils/subscription_app_id.dart';
import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/matrix.dart';
// Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:url_launcher/url_launcher_string.dart';
class SubscriptionManagement extends StatefulWidget { class SubscriptionManagement extends StatefulWidget {
const SubscriptionManagement({Key? key}) : super(key: key); const SubscriptionManagement({super.key});
@override @override
SubscriptionManagementController createState() => SubscriptionManagementController createState() =>
@ -57,6 +55,10 @@ class SubscriptionManagementController extends State<SubscriptionManagement> {
?.currentSubscriptionIsPromotional ?? ?.currentSubscriptionIsPromotional ??
false; false;
bool get isNewUserTrial =>
pangeaController.subscriptionController.subscription?.isNewUserTrial ??
false;
bool get showManagementOptions { bool get showManagementOptions {
if (!currentSubscriptionAvailable) { if (!currentSubscriptionAvailable) {
return false; return false;

@ -1,10 +1,4 @@
// Flutter imports: // Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:intl/intl.dart';
// Project imports: // Project imports:
import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/controllers/subscription_controller.dart'; import 'package:fluffychat/pangea/controllers/subscription_controller.dart';
@ -12,11 +6,15 @@ import 'package:fluffychat/pangea/pages/settings_subscription/change_subscriptio
import 'package:fluffychat/pangea/pages/settings_subscription/settings_subscription.dart'; import 'package:fluffychat/pangea/pages/settings_subscription/settings_subscription.dart';
import 'package:fluffychat/widgets/layouts/max_width_body.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart';
import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart';
// Package imports:
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:intl/intl.dart';
class SettingsSubscriptionView extends StatelessWidget { class SettingsSubscriptionView extends StatelessWidget {
final SubscriptionManagementController controller; final SubscriptionManagementController controller;
final PangeaController pangeaController = MatrixState.pangeaController; final PangeaController pangeaController = MatrixState.pangeaController;
SettingsSubscriptionView(this.controller, {Key? key}) : super(key: key); SettingsSubscriptionView(this.controller, {super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -87,7 +85,7 @@ class SettingsSubscriptionView extends StatelessWidget {
controller: controller, controller: controller,
subscriptionController: subscriptionController:
pangeaController.subscriptionController, pangeaController.subscriptionController,
) ),
], ],
), ),
), ),
@ -103,50 +101,49 @@ class ManagementNotAvailableWarning extends StatelessWidget {
const ManagementNotAvailableWarning({ const ManagementNotAvailableWarning({
required this.controller, required this.controller,
required this.subscriptionController, required this.subscriptionController,
Key? key, super.key,
}) : super(key: key); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final bool currentSubscriptionAvailable = String getWarningText() {
controller.currentSubscriptionAvailable; final DateFormat formatter = DateFormat('yyyy-MM-dd');
final bool currentSubscriptionIsPromotional = if (controller.isNewUserTrial) {
controller.currentSubscriptionIsPromotional; return L10n.of(context)!.trialExpiration(
final String? purchasePlatformDisplayName = formatter.format(
controller.purchasePlatformDisplayName; subscriptionController.subscription!.expirationDate!,
final bool isLifetimeSubscription = ),
subscriptionController.subscription?.isLifetimeSubscription ?? false; );
final DateTime? expirationDate = }
subscriptionController.subscription?.expirationDate; if (controller.currentSubscriptionAvailable) {
String warningText = L10n.of(context)!.subsciptionPlatformTooltip;
String warningText = L10n.of(context)!.subscriptionManagementUnavailable; if (controller.purchasePlatformDisplayName != null) {
final DateFormat formatter = DateFormat('yyyy-MM-dd'); warningText +=
"\n${L10n.of(context)!.originalSubscriptionPlatform(controller.purchasePlatformDisplayName!)}";
if (currentSubscriptionAvailable) { }
warningText = L10n.of(context)!.subsciptionPlatformTooltip; return warningText;
} else if (currentSubscriptionIsPromotional) { }
if (isLifetimeSubscription) { if (controller.currentSubscriptionIsPromotional) {
warningText = L10n.of(context)!.promotionalSubscriptionDesc; if (subscriptionController.subscription?.isLifetimeSubscription ??
} else { false) {
warningText = L10n.of(context)!.promoSubscriptionExpirationDesc( return L10n.of(context)!.promotionalSubscriptionDesc;
formatter.format(expirationDate!), }
return L10n.of(context)!.promoSubscriptionExpirationDesc(
formatter.format(
subscriptionController.subscription!.expirationDate!,
),
); );
} }
return L10n.of(context)!.subscriptionManagementUnavailable;
} }
return Center( return Center(
child: Column( child: Padding(
children: [ padding: const EdgeInsets.all(20),
Text( child: Text(
warningText, getWarningText(),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
if (purchasePlatformDisplayName != null)
Text(
"${L10n.of(context)!.originalSubscriptionPlatform} $purchasePlatformDisplayName",
textAlign: TextAlign.center,
),
],
), ),
); );
} }

@ -755,7 +755,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"bn": [ "bn": [
@ -1519,7 +1520,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"bo": [ "bo": [
@ -2283,7 +2285,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ca": [ "ca": [
@ -3042,7 +3045,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"cs": [ "cs": [
@ -3801,7 +3805,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"de": [ "de": [
@ -4560,7 +4565,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"el": [ "el": [
@ -5324,7 +5330,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"eo": [ "eo": [
@ -6083,7 +6090,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"es": [ "es": [
@ -6106,7 +6114,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"et": [ "et": [
@ -6865,7 +6874,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"eu": [ "eu": [
@ -7624,7 +7634,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"fa": [ "fa": [
@ -8383,7 +8394,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"fi": [ "fi": [
@ -9142,7 +9154,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"fr": [ "fr": [
@ -9901,7 +9914,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ga": [ "ga": [
@ -10660,7 +10674,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"gl": [ "gl": [
@ -11419,7 +11434,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"he": [ "he": [
@ -12178,7 +12194,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"hi": [ "hi": [
@ -12942,7 +12959,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"hr": [ "hr": [
@ -13701,7 +13719,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"hu": [ "hu": [
@ -14460,7 +14479,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"id": [ "id": [
@ -15219,7 +15239,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ie": [ "ie": [
@ -15980,7 +16001,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"it": [ "it": [
@ -16739,7 +16761,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ja": [ "ja": [
@ -17498,7 +17521,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ko": [ "ko": [
@ -18257,7 +18281,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"lt": [ "lt": [
@ -19016,7 +19041,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"lv": [ "lv": [
@ -19780,7 +19806,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"nb": [ "nb": [
@ -20539,7 +20566,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"nl": [ "nl": [
@ -21298,7 +21326,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"pl": [ "pl": [
@ -22057,7 +22086,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"pt": [ "pt": [
@ -22821,7 +22851,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"pt_BR": [ "pt_BR": [
@ -23580,7 +23611,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"pt_PT": [ "pt_PT": [
@ -24339,7 +24371,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ro": [ "ro": [
@ -25098,7 +25131,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ru": [ "ru": [
@ -25857,7 +25891,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"sk": [ "sk": [
@ -26617,7 +26652,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"sl": [ "sl": [
@ -27379,7 +27415,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"sr": [ "sr": [
@ -28138,7 +28175,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"sv": [ "sv": [
@ -28897,7 +28935,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"ta": [ "ta": [
@ -29661,7 +29700,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"th": [ "th": [
@ -30425,7 +30465,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"tr": [ "tr": [
@ -31184,7 +31225,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"uk": [ "uk": [
@ -31943,7 +31985,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"vi": [ "vi": [
@ -32705,7 +32748,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"zh": [ "zh": [
@ -33464,7 +33508,8 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
], ],
"zh_Hant": [ "zh_Hant": [
@ -34223,6 +34268,7 @@
"searchChatsRooms", "searchChatsRooms",
"groupName", "groupName",
"createGroupAndInviteUsers", "createGroupAndInviteUsers",
"groupCanBeFoundViaSearch" "groupCanBeFoundViaSearch",
"trialExpiration"
] ]
} }

Loading…
Cancel
Save