grant trial to users in their first week
This commit is contained in:
parent
19ef30fa1e
commit
749daca14b
8 changed files with 224 additions and 118 deletions
|
|
@ -66,8 +66,10 @@ android {
|
|||
buildTypes {
|
||||
debug {
|
||||
signingConfig signingConfigs.debug
|
||||
applicationIdSuffix ".debug"
|
||||
versionNameSuffix "-debug"
|
||||
// #Pangea - this causes errors with android debug build
|
||||
// applicationIdSuffix ".debug"
|
||||
// versionNameSuffix "-debug"
|
||||
// Pangea#
|
||||
}
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
|
|
|
|||
|
|
@ -3339,7 +3339,12 @@
|
|||
"downloadTxtFile": "Download Text File",
|
||||
"downloadCSVFile": "Download CSV File",
|
||||
"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",
|
||||
"creatingSpacePleaseWait": "Creating space. Please wait...",
|
||||
"downloadXLSXFile": "Download Excel File",
|
||||
|
|
@ -3937,5 +3942,11 @@
|
|||
"searchChatsRooms": "Search for #chats, @users...",
|
||||
"groupName": "Group name",
|
||||
"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:
|
||||
import 'dart:ui';
|
||||
|
||||
// Package imports:
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
// Project imports:
|
||||
import 'package:fluffychat/pangea/config/environment.dart';
|
||||
// Package imports:
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
abstract class AppConfig {
|
||||
// #Pangea
|
||||
|
|
@ -124,6 +123,7 @@ abstract class AppConfig {
|
|||
"https://buy.stripe.com/test_bIY6ssd8z5Uz8ec8ww";
|
||||
static String iosPromoCode =
|
||||
"https://apps.apple.com/redeem?ctx=offercodes&id=1445118630&code=";
|
||||
static String trialSubscriptionId = "pangea_new_user_trial";
|
||||
// Pangea#
|
||||
|
||||
static void loadFromJson(Map<String, dynamic> json) {
|
||||
|
|
|
|||
|
|
@ -2,17 +2,8 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
// Flutter imports:
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Package imports:
|
||||
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:
|
||||
import 'package:fluffychat/config/app_config.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/widgets/subscription/subscription_paywall.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 {
|
||||
late PangeaController _pangeaController;
|
||||
|
|
@ -63,6 +60,9 @@ class SubscriptionController extends BaseController {
|
|||
: MobileSubscriptionInfo(pangeaController: _pangeaController);
|
||||
|
||||
await subscription!.configure();
|
||||
if (!isSubscribed) {
|
||||
addNewAccountTrial();
|
||||
}
|
||||
|
||||
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 {
|
||||
if (subscription == null) {
|
||||
ErrorHandler.logError(
|
||||
|
|
@ -91,8 +118,10 @@ class SubscriptionController extends BaseController {
|
|||
setState();
|
||||
}
|
||||
|
||||
Future<void> showPaywall(BuildContext context,
|
||||
[bool forceShow = false]) async {
|
||||
Future<void> showPaywall(
|
||||
BuildContext context, [
|
||||
bool forceShow = false,
|
||||
]) async {
|
||||
try {
|
||||
if (!initialized) {
|
||||
await initialize();
|
||||
|
|
@ -160,8 +189,10 @@ class SubscriptionController extends BaseController {
|
|||
}
|
||||
|
||||
void submitSubscriptionChange(
|
||||
SubscriptionDetails? selectedSubscription, BuildContext context,
|
||||
{bool isPromo = false}) async {
|
||||
SubscriptionDetails? selectedSubscription,
|
||||
BuildContext context, {
|
||||
bool isPromo = false,
|
||||
}) async {
|
||||
if (selectedSubscription != null) {
|
||||
if (kIsWeb) {
|
||||
if (selectedSubscription.duration == null) {
|
||||
|
|
@ -191,7 +222,9 @@ class SubscriptionController extends BaseController {
|
|||
}
|
||||
try {
|
||||
GoogleAnalytics.beginPurchaseSubscription(
|
||||
selectedSubscription, context);
|
||||
selectedSubscription,
|
||||
context,
|
||||
);
|
||||
await Purchases.purchasePackage(selectedSubscription.package!);
|
||||
GoogleAnalytics.updateUserSubscriptionStatus(true);
|
||||
} catch (err) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
// Project imports:
|
||||
import 'package:fluffychat/config/app_config.dart';
|
||||
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
|
||||
import 'package:fluffychat/pangea/controllers/subscription_controller.dart';
|
||||
import 'package:fluffychat/pangea/repo/subscription_repo.dart';
|
||||
|
|
@ -45,6 +46,9 @@ class SubscriptionInfo {
|
|||
allProducts = await SubscriptionRepo.getAllProducts();
|
||||
}
|
||||
|
||||
bool get isNewUserTrial =>
|
||||
currentSubscriptionId == AppConfig.trialSubscriptionId;
|
||||
|
||||
bool get currentSubscriptionIsPromotional =>
|
||||
currentSubscriptionId?.startsWith("rc_promo") ?? false;
|
||||
|
||||
|
|
@ -71,5 +75,16 @@ class SubscriptionInfo {
|
|||
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 {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,6 @@
|
|||
// Dart imports:
|
||||
import 'dart:async';
|
||||
|
||||
// Flutter imports:
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
// Project imports:
|
||||
import 'package:fluffychat/config/app_config.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/utils/subscription_app_id.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 {
|
||||
const SubscriptionManagement({Key? key}) : super(key: key);
|
||||
const SubscriptionManagement({super.key});
|
||||
|
||||
@override
|
||||
SubscriptionManagementController createState() =>
|
||||
|
|
@ -57,6 +55,10 @@ class SubscriptionManagementController extends State<SubscriptionManagement> {
|
|||
?.currentSubscriptionIsPromotional ??
|
||||
false;
|
||||
|
||||
bool get isNewUserTrial =>
|
||||
pangeaController.subscriptionController.subscription?.isNewUserTrial ??
|
||||
false;
|
||||
|
||||
bool get showManagementOptions {
|
||||
if (!currentSubscriptionAvailable) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
// Flutter imports:
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
// Project imports:
|
||||
import 'package:fluffychat/pangea/controllers/pangea_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/widgets/layouts/max_width_body.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 {
|
||||
final SubscriptionManagementController controller;
|
||||
final PangeaController pangeaController = MatrixState.pangeaController;
|
||||
SettingsSubscriptionView(this.controller, {Key? key}) : super(key: key);
|
||||
SettingsSubscriptionView(this.controller, {super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -87,7 +85,7 @@ class SettingsSubscriptionView extends StatelessWidget {
|
|||
controller: controller,
|
||||
subscriptionController:
|
||||
pangeaController.subscriptionController,
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
@ -103,50 +101,49 @@ class ManagementNotAvailableWarning extends StatelessWidget {
|
|||
const ManagementNotAvailableWarning({
|
||||
required this.controller,
|
||||
required this.subscriptionController,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final bool currentSubscriptionAvailable =
|
||||
controller.currentSubscriptionAvailable;
|
||||
final bool currentSubscriptionIsPromotional =
|
||||
controller.currentSubscriptionIsPromotional;
|
||||
final String? purchasePlatformDisplayName =
|
||||
controller.purchasePlatformDisplayName;
|
||||
final bool isLifetimeSubscription =
|
||||
subscriptionController.subscription?.isLifetimeSubscription ?? false;
|
||||
final DateTime? expirationDate =
|
||||
subscriptionController.subscription?.expirationDate;
|
||||
|
||||
String warningText = L10n.of(context)!.subscriptionManagementUnavailable;
|
||||
final DateFormat formatter = DateFormat('yyyy-MM-dd');
|
||||
|
||||
if (currentSubscriptionAvailable) {
|
||||
warningText = L10n.of(context)!.subsciptionPlatformTooltip;
|
||||
} else if (currentSubscriptionIsPromotional) {
|
||||
if (isLifetimeSubscription) {
|
||||
warningText = L10n.of(context)!.promotionalSubscriptionDesc;
|
||||
} else {
|
||||
warningText = L10n.of(context)!.promoSubscriptionExpirationDesc(
|
||||
formatter.format(expirationDate!),
|
||||
String getWarningText() {
|
||||
final DateFormat formatter = DateFormat('yyyy-MM-dd');
|
||||
if (controller.isNewUserTrial) {
|
||||
return L10n.of(context)!.trialExpiration(
|
||||
formatter.format(
|
||||
subscriptionController.subscription!.expirationDate!,
|
||||
),
|
||||
);
|
||||
}
|
||||
if (controller.currentSubscriptionAvailable) {
|
||||
String warningText = L10n.of(context)!.subsciptionPlatformTooltip;
|
||||
if (controller.purchasePlatformDisplayName != null) {
|
||||
warningText +=
|
||||
"\n${L10n.of(context)!.originalSubscriptionPlatform(controller.purchasePlatformDisplayName!)}";
|
||||
}
|
||||
return warningText;
|
||||
}
|
||||
if (controller.currentSubscriptionIsPromotional) {
|
||||
if (subscriptionController.subscription?.isLifetimeSubscription ??
|
||||
false) {
|
||||
return L10n.of(context)!.promotionalSubscriptionDesc;
|
||||
}
|
||||
return L10n.of(context)!.promoSubscriptionExpirationDesc(
|
||||
formatter.format(
|
||||
subscriptionController.subscription!.expirationDate!,
|
||||
),
|
||||
);
|
||||
}
|
||||
return L10n.of(context)!.subscriptionManagementUnavailable;
|
||||
}
|
||||
|
||||
return Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Text(
|
||||
warningText,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
if (purchasePlatformDisplayName != null)
|
||||
Text(
|
||||
"${L10n.of(context)!.originalSubscriptionPlatform} $purchasePlatformDisplayName",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
],
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(20),
|
||||
child: Text(
|
||||
getWarningText(),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -755,7 +755,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"bn": [
|
||||
|
|
@ -1519,7 +1520,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"bo": [
|
||||
|
|
@ -2283,7 +2285,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ca": [
|
||||
|
|
@ -3042,7 +3045,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"cs": [
|
||||
|
|
@ -3801,7 +3805,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"de": [
|
||||
|
|
@ -4560,7 +4565,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"el": [
|
||||
|
|
@ -5324,7 +5330,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"eo": [
|
||||
|
|
@ -6083,7 +6090,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"es": [
|
||||
|
|
@ -6106,7 +6114,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"et": [
|
||||
|
|
@ -6865,7 +6874,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"eu": [
|
||||
|
|
@ -7624,7 +7634,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"fa": [
|
||||
|
|
@ -8383,7 +8394,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"fi": [
|
||||
|
|
@ -9142,7 +9154,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"fr": [
|
||||
|
|
@ -9901,7 +9914,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ga": [
|
||||
|
|
@ -10660,7 +10674,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"gl": [
|
||||
|
|
@ -11419,7 +11434,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"he": [
|
||||
|
|
@ -12178,7 +12194,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"hi": [
|
||||
|
|
@ -12942,7 +12959,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"hr": [
|
||||
|
|
@ -13701,7 +13719,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"hu": [
|
||||
|
|
@ -14460,7 +14479,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"id": [
|
||||
|
|
@ -15219,7 +15239,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ie": [
|
||||
|
|
@ -15980,7 +16001,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"it": [
|
||||
|
|
@ -16739,7 +16761,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ja": [
|
||||
|
|
@ -17498,7 +17521,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ko": [
|
||||
|
|
@ -18257,7 +18281,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"lt": [
|
||||
|
|
@ -19016,7 +19041,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"lv": [
|
||||
|
|
@ -19780,7 +19806,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"nb": [
|
||||
|
|
@ -20539,7 +20566,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"nl": [
|
||||
|
|
@ -21298,7 +21326,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"pl": [
|
||||
|
|
@ -22057,7 +22086,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"pt": [
|
||||
|
|
@ -22821,7 +22851,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"pt_BR": [
|
||||
|
|
@ -23580,7 +23611,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"pt_PT": [
|
||||
|
|
@ -24339,7 +24371,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ro": [
|
||||
|
|
@ -25098,7 +25131,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ru": [
|
||||
|
|
@ -25857,7 +25891,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"sk": [
|
||||
|
|
@ -26617,7 +26652,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"sl": [
|
||||
|
|
@ -27379,7 +27415,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"sr": [
|
||||
|
|
@ -28138,7 +28175,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"sv": [
|
||||
|
|
@ -28897,7 +28935,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"ta": [
|
||||
|
|
@ -29661,7 +29700,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"th": [
|
||||
|
|
@ -30425,7 +30465,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"tr": [
|
||||
|
|
@ -31184,7 +31225,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"uk": [
|
||||
|
|
@ -31943,7 +31985,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"vi": [
|
||||
|
|
@ -32705,7 +32748,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"zh": [
|
||||
|
|
@ -33464,7 +33508,8 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
],
|
||||
|
||||
"zh_Hant": [
|
||||
|
|
@ -34223,6 +34268,7 @@
|
|||
"searchChatsRooms",
|
||||
"groupName",
|
||||
"createGroupAndInviteUsers",
|
||||
"groupCanBeFoundViaSearch"
|
||||
"groupCanBeFoundViaSearch",
|
||||
"trialExpiration"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue