- Completed click count in sidebar

- Handled optional gender type
- Handled optional gender in profile
- Remaining MyListVC changes
This commit is contained in:
2024-08-13 20:02:41 +05:30
parent d17fe416ae
commit 5cf02c5aae
47 changed files with 1142 additions and 636 deletions

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).NotificationService</string>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,41 @@
//
// NotificationService.swift
// OneSignalNotificationServiceExtension
//
// Created by MacBook Pro on 13/08/24.
//
import UserNotifications
import OneSignalExtension
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var receivedRequest: UNNotificationRequest!
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.receivedRequest = request
self.contentHandler = contentHandler
self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
/* DEBUGGING: Uncomment the 2 lines below to check this extension is executing
Note, this extension only runs when mutable-content is set
Setting an attachment or action buttons automatically adds this */
// print("Running NotificationServiceExtension")
// bestAttemptContent.body = "[Modified] " + bestAttemptContent.body
OneSignalExtension.didReceiveNotificationExtensionRequest(self.receivedRequest, with: bestAttemptContent, withContentHandler: self.contentHandler)
}
}
override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
OneSignalExtension.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent)
contentHandler(bestAttemptContent)
}
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.app.woka.onesignal</string>
</array>
</dict>
</plist>

View File

@@ -108,6 +108,11 @@
528E5F1B2C24531200E33E4E /* SeasonListingDM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528E5F1A2C24531200E33E4E /* SeasonListingDM.swift */; };
528E5F222C24660F00E33E4E /* SeasonCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528E5F202C24660F00E33E4E /* SeasonCategoryCell.swift */; };
528E5F232C24660F00E33E4E /* SeasonCategoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 528E5F212C24660F00E33E4E /* SeasonCategoryCell.xib */; };
528F26E22C6B7B30003E4D99 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528F26E12C6B7B30003E4D99 /* NotificationService.swift */; };
528F26E62C6B7B30003E4D99 /* OneSignalNotificationServiceExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 528F26DF2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
528F26EE2C6B7BD1003E4D99 /* OneSignalExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 528F26ED2C6B7BD1003E4D99 /* OneSignalExtension */; };
528F26F02C6B7BD1003E4D99 /* OneSignalFramework in Frameworks */ = {isa = PBXBuildFile; productRef = 528F26EF2C6B7BD1003E4D99 /* OneSignalFramework */; };
528F26F22C6B7BD1003E4D99 /* OneSignalInAppMessages in Frameworks */ = {isa = PBXBuildFile; productRef = 528F26F12C6B7BD1003E4D99 /* OneSignalInAppMessages */; };
529B0DD42C06156B00CFC54B /* LoginNavVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 529B0DD32C06156B00CFC54B /* LoginNavVC.swift */; };
529B0DD62C070C0F00CFC54B /* GuestDataDM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 529B0DD52C070C0F00CFC54B /* GuestDataDM.swift */; };
529CFEEE2C60F49000B0B380 /* UserNotificationVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 529CFEED2C60F49000B0B380 /* UserNotificationVM.swift */; };
@@ -361,8 +366,29 @@
remoteGlobalIDString = 523ED2592BDA2BC700CFED02;
remoteInfo = WOKA;
};
528F26E42C6B7B30003E4D99 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 523ED2522BDA2BC700CFED02 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 528F26DE2C6B7B30003E4D99;
remoteInfo = OneSignalNotificationServiceExtension;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
528F26E72C6B7B30003E4D99 /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
528F26E62C6B7B30003E4D99 /* OneSignalNotificationServiceExtension.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
2081C2B186A876137E7DBDF2 /* Pods-WOKA.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WOKA.release.xcconfig"; path = "Target Support Files/Pods-WOKA/Pods-WOKA.release.xcconfig"; sourceTree = "<group>"; };
3B045136DB6D1DB0D38BD128 /* Pods_WOKA.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WOKA.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -473,6 +499,10 @@
528E5F1A2C24531200E33E4E /* SeasonListingDM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonListingDM.swift; sourceTree = "<group>"; };
528E5F202C24660F00E33E4E /* SeasonCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonCategoryCell.swift; sourceTree = "<group>"; };
528E5F212C24660F00E33E4E /* SeasonCategoryCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SeasonCategoryCell.xib; sourceTree = "<group>"; };
528F26DF2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = OneSignalNotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
528F26E12C6B7B30003E4D99 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
528F26E32C6B7B30003E4D99 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
528F26EB2C6B7B80003E4D99 /* OneSignalNotificationServiceExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OneSignalNotificationServiceExtension.entitlements; sourceTree = "<group>"; };
529B0DD32C06156B00CFC54B /* LoginNavVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginNavVC.swift; sourceTree = "<group>"; };
529B0DD52C070C0F00CFC54B /* GuestDataDM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuestDataDM.swift; sourceTree = "<group>"; };
529CFEED2C60F49000B0B380 /* UserNotificationVM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserNotificationVM.swift; sourceTree = "<group>"; };
@@ -712,9 +742,11 @@
files = (
4469E533EC95AC428FE50FB2 /* Pods_WOKA.framework in Frameworks */,
52C83E3F2C493FD700F27563 /* RSKPlaceholderTextView in Frameworks */,
528F26F02C6B7BD1003E4D99 /* OneSignalFramework in Frameworks */,
9C85A9F32C5CE1060031C365 /* FirebasePerformance in Frameworks */,
9C85A9F12C5CE1060031C365 /* FirebaseCrashlytics in Frameworks */,
9C85A9EF2C5CE1060031C365 /* FirebaseAnalytics in Frameworks */,
528F26F22C6B7BD1003E4D99 /* OneSignalInAppMessages in Frameworks */,
521CB1002C493DB80085BDF8 /* JWPlayerKit in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -733,6 +765,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
528F26DC2C6B7B30003E4D99 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
528F26EE2C6B7BD1003E4D99 /* OneSignalExtension in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -838,6 +878,7 @@
523ED25C2BDA2BC700CFED02 /* WOKA */,
523ED2732BDA2BC900CFED02 /* WOKATests */,
523ED27D2BDA2BC900CFED02 /* WOKAUITests */,
528F26E02C6B7B30003E4D99 /* OneSignalNotificationServiceExtension */,
523ED25B2BDA2BC700CFED02 /* Products */,
23C3A42E953212A2665EE308 /* Pods */,
05869DFFEE498B214527F2E9 /* Frameworks */,
@@ -850,6 +891,7 @@
523ED25A2BDA2BC700CFED02 /* WOKA.app */,
523ED2702BDA2BC900CFED02 /* WOKATests.xctest */,
523ED27A2BDA2BC900CFED02 /* WOKAUITests.xctest */,
528F26DF2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension.appex */,
);
name = Products;
sourceTree = "<group>";
@@ -1219,6 +1261,16 @@
path = Timer;
sourceTree = "<group>";
};
528F26E02C6B7B30003E4D99 /* OneSignalNotificationServiceExtension */ = {
isa = PBXGroup;
children = (
528F26EB2C6B7B80003E4D99 /* OneSignalNotificationServiceExtension.entitlements */,
528F26E12C6B7B30003E4D99 /* NotificationService.swift */,
528F26E32C6B7B30003E4D99 /* Info.plist */,
);
path = OneSignalNotificationServiceExtension;
sourceTree = "<group>";
};
52A6DC942C4E385500F63C51 /* Shop */ = {
isa = PBXGroup;
children = (
@@ -1918,10 +1970,12 @@
523ED2572BDA2BC700CFED02 /* Frameworks */,
523ED2582BDA2BC700CFED02 /* Resources */,
90182DDCD7EAE5F6DA5B4DFB /* [CP] Embed Pods Frameworks */,
528F26E72C6B7B30003E4D99 /* Embed Foundation Extensions */,
);
buildRules = (
);
dependencies = (
528F26E52C6B7B30003E4D99 /* PBXTargetDependency */,
);
name = WOKA;
packageProductDependencies = (
@@ -1930,6 +1984,8 @@
9C85A9EE2C5CE1060031C365 /* FirebaseAnalytics */,
9C85A9F02C5CE1060031C365 /* FirebaseCrashlytics */,
9C85A9F22C5CE1060031C365 /* FirebasePerformance */,
528F26EF2C6B7BD1003E4D99 /* OneSignalFramework */,
528F26F12C6B7BD1003E4D99 /* OneSignalInAppMessages */,
);
productName = WOKA;
productReference = 523ED25A2BDA2BC700CFED02 /* WOKA.app */;
@@ -1971,6 +2027,26 @@
productReference = 523ED27A2BDA2BC900CFED02 /* WOKAUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
528F26DE2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = 528F26EA2C6B7B30003E4D99 /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */;
buildPhases = (
528F26DB2C6B7B30003E4D99 /* Sources */,
528F26DC2C6B7B30003E4D99 /* Frameworks */,
528F26DD2C6B7B30003E4D99 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = OneSignalNotificationServiceExtension;
packageProductDependencies = (
528F26ED2C6B7BD1003E4D99 /* OneSignalExtension */,
);
productName = OneSignalNotificationServiceExtension;
productReference = 528F26DF2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -1978,7 +2054,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1530;
LastSwiftUpdateCheck = 1540;
LastUpgradeCheck = 1530;
TargetAttributes = {
523ED2592BDA2BC700CFED02 = {
@@ -1992,6 +2068,9 @@
CreatedOnToolsVersion = 15.3;
TestTargetID = 523ED2592BDA2BC700CFED02;
};
528F26DE2C6B7B30003E4D99 = {
CreatedOnToolsVersion = 15.4;
};
};
};
buildConfigurationList = 523ED2552BDA2BC700CFED02 /* Build configuration list for PBXProject "WOKA" */;
@@ -2008,6 +2087,7 @@
521CB0FE2C493DB80085BDF8 /* XCRemoteSwiftPackageReference "JWPlayerKit-package" */,
52C83E3D2C493FD700F27563 /* XCRemoteSwiftPackageReference "RSKPlaceholderTextView" */,
9C85A9ED2C5CE1060031C365 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
528F26EC2C6B7BD1003E4D99 /* XCRemoteSwiftPackageReference "OneSignal-XCFramework" */,
);
productRefGroup = 523ED25B2BDA2BC700CFED02 /* Products */;
projectDirPath = "";
@@ -2016,6 +2096,7 @@
523ED2592BDA2BC700CFED02 /* WOKA */,
523ED26F2BDA2BC900CFED02 /* WOKATests */,
523ED2792BDA2BC900CFED02 /* WOKAUITests */,
528F26DE2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension */,
);
};
/* End PBXProject section */
@@ -2108,6 +2189,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
528F26DD2C6B7B30003E4D99 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -2439,6 +2527,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
528F26DB2C6B7B30003E4D99 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
528F26E22C6B7B30003E4D99 /* NotificationService.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -2452,6 +2548,11 @@
target = 523ED2592BDA2BC700CFED02 /* WOKA */;
targetProxy = 523ED27B2BDA2BC900CFED02 /* PBXContainerItemProxy */;
};
528F26E52C6B7B30003E4D99 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 528F26DE2C6B7B30003E4D99 /* OneSignalNotificationServiceExtension */;
targetProxy = 528F26E42C6B7B30003E4D99 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -2632,6 +2733,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = C83A2BA3B8F575DC890CC5DD /* Pods-WOKA.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = WOKA/WOKA.entitlements;
@@ -2671,6 +2773,7 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 2081C2B186A876137E7DBDF2 /* Pods-WOKA.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = WOKA/WOKA.entitlements;
@@ -2782,6 +2885,62 @@
};
name = Release;
};
528F26E82C6B7B30003E4D99 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 4S9A74ZB6H;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 17.5;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.woka.OneSignalNotificationServiceExtension;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
528F26E92C6B7B30003E4D99 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 4S9A74ZB6H;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 17.5;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.woka.OneSignalNotificationServiceExtension;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -2821,6 +2980,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
528F26EA2C6B7B30003E4D99 /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
528F26E82C6B7B30003E4D99 /* Debug */,
528F26E92C6B7B30003E4D99 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
@@ -2832,6 +3000,14 @@
version = 4.19.1;
};
};
528F26EC2C6B7BD1003E4D99 /* XCRemoteSwiftPackageReference "OneSignal-XCFramework" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/OneSignal/OneSignal-XCFramework";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 5.2.2;
};
};
52C83E3D2C493FD700F27563 /* XCRemoteSwiftPackageReference "RSKPlaceholderTextView" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/ruslanskorb/RSKPlaceholderTextView.git";
@@ -2856,6 +3032,21 @@
package = 521CB0FE2C493DB80085BDF8 /* XCRemoteSwiftPackageReference "JWPlayerKit-package" */;
productName = JWPlayerKit;
};
528F26ED2C6B7BD1003E4D99 /* OneSignalExtension */ = {
isa = XCSwiftPackageProductDependency;
package = 528F26EC2C6B7BD1003E4D99 /* XCRemoteSwiftPackageReference "OneSignal-XCFramework" */;
productName = OneSignalExtension;
};
528F26EF2C6B7BD1003E4D99 /* OneSignalFramework */ = {
isa = XCSwiftPackageProductDependency;
package = 528F26EC2C6B7BD1003E4D99 /* XCRemoteSwiftPackageReference "OneSignal-XCFramework" */;
productName = OneSignalFramework;
};
528F26F12C6B7BD1003E4D99 /* OneSignalInAppMessages */ = {
isa = XCSwiftPackageProductDependency;
package = 528F26EC2C6B7BD1003E4D99 /* XCRemoteSwiftPackageReference "OneSignal-XCFramework" */;
productName = OneSignalInAppMessages;
};
52C83E3E2C493FD700F27563 /* RSKPlaceholderTextView */ = {
isa = XCSwiftPackageProductDependency;
package = 52C83E3D2C493FD700F27563 /* XCRemoteSwiftPackageReference "RSKPlaceholderTextView" */;

View File

@@ -85,11 +85,11 @@
</CommandLineArgument>
<CommandLineArgument
argument = "-FIRDebugDisabled"
isEnabled = "NO">
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-FIRAnalyticsDebugDisabled"
isEnabled = "NO">
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>

View File

@@ -57,6 +57,7 @@ class YesNoAlertVC: UIViewController {
// MARK: - Button Handler
@IBAction func closeBtnTapped(_ sender: UIButton) {
PersistentStorage.shared.addOthersCount()
self.dismiss()
}

View File

@@ -43,25 +43,25 @@
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="wZZ-TW-F7M">
<rect key="frame" x="20" y="172.66666666666663" width="390" height="203"/>
<rect key="frame" x="20" y="172.66666666666663" width="390" height="201.33333333333337"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Lets be Safe!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yPx-mT-kaf" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="370" height="33.666666666666664"/>
<rect key="frame" x="10" y="0.0" width="370" height="32.666666666666664"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="28"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="xww-d1-beY">
<rect key="frame" x="10" y="103.66666666666666" width="370" height="99.333333333333343"/>
<rect key="frame" x="10" y="102.66666666666666" width="370" height="98.666666666666657"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CAN WE HAVE YOUR PARENTS EMAIL?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="STc-F9-ORA">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your email" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DSB-Ge-wNO" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333371" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -80,7 +80,7 @@
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JHJ-Zh-JC5">
<rect key="frame" x="0.0" y="99.333333333333371" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666686" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -91,16 +91,16 @@
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="kWC-4v-p9x">
<rect key="frame" x="30" y="776" width="370" height="102"/>
<rect key="frame" x="30" y="776.66666666666663" width="370" height="101.33333333333337"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="We will send a verification code to their email" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lqT-ZV-x5p" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="17"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="16.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zNR-RE-Ax8" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="52" width="370" height="50"/>
<rect key="frame" x="0.0" y="51.333333333333371" width="370" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="4eR-zk-hWT"/>
</constraints>
@@ -167,10 +167,10 @@
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="mhH-Ov-1nU">
<rect key="frame" x="20" y="172.66666666666663" width="390" height="281"/>
<rect key="frame" x="20" y="172.66666666666666" width="390" height="277.66666666666674"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NYC-6J-drr" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="370" height="67.333333333333329"/>
<rect key="frame" x="10" y="0.0" width="370" height="65.333333333333329"/>
<string key="text">Please Get the Code
Sent to Your Parents Email</string>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="28"/>
@@ -178,16 +178,16 @@ Sent to Your Parents Email</string>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="dF8-rD-e8F">
<rect key="frame" x="10" y="137.33333333333337" width="370" height="143.66666666666663"/>
<rect key="frame" x="10" y="135.33333333333331" width="370" height="142.33333333333331"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PLEASE ENTER THE CODE" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tB6-Qz-8Ez" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="HGA-bw-mMW">
<rect key="frame" x="0.0" y="34.333333333333314" width="370" height="60"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="370" height="60"/>
<subviews>
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="*" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="81S-Fa-CiD" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="85" height="60"/>
@@ -223,13 +223,13 @@ Sent to Your Parents Email</string>
</constraints>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="OTP is valid for 10:00 Min" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WcL-Rp-jOq" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="109.33333333333331" width="370" height="19.333333333333343"/>
<rect key="frame" x="0.0" y="108.66666666666669" width="370" height="18.666666666666671"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KX4-Ip-eii" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="136" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="134.66666666666669" width="370" height="0.0"/>
<color key="tintColor" name="TextDarkBlue"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain">
@@ -247,7 +247,7 @@ Sent to Your Parents Email</string>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dt3-hg-7T4" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="143.66666666666669" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="142.33333333333331" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -258,16 +258,16 @@ Sent to Your Parents Email</string>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="xga-nK-9qJ">
<rect key="frame" x="30" y="759.33333333333337" width="370" height="118.66666666666663"/>
<rect key="frame" x="30" y="760.33333333333337" width="370" height="117.66666666666663"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Request them for the verfication code to activate your account" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M3r-lS-DmW" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="33.666666666666664"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="32.666666666666664"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vVW-Kz-YaV" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="68.666666666666629" width="370" height="50"/>
<rect key="frame" x="0.0" y="67.666666666666629" width="370" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="KmJ-vu-pxT"/>
</constraints>
@@ -339,28 +339,28 @@ Sent to Your Parents Email</string>
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="L80-bN-1T0">
<rect key="frame" x="20" y="172.66666666666663" width="390" height="510"/>
<rect key="frame" x="20" y="172.66666666666666" width="390" height="505.33333333333337"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Great! Now Lets Create Your WOKAccount" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3x2-kd-tL1" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="370" height="65"/>
<rect key="frame" x="10" y="0.0" width="370" height="63"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="27"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="bJs-H6-708">
<rect key="frame" x="10" y="135" width="370" height="375"/>
<rect key="frame" x="10" y="133.00000000000003" width="370" height="372.33333333333337"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="LUQ-BX-nHw">
<rect key="frame" x="0.0" y="0.0" width="370" height="99.333333333333329"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="98.666666666666671"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SELECT USERNAME" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w7B-kJ-IgM" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your username" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="m50-FZ-yVO" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333314" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666629" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -379,7 +379,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RuI-5z-pyW">
<rect key="frame" x="0.0" y="99.333333333333314" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666629" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -387,16 +387,16 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="qSD-g5-OZA">
<rect key="frame" x="0.0" y="129.33333333333331" width="370" height="99.333333333333314"/>
<rect key="frame" x="0.0" y="128.66666666666663" width="370" height="98.666666666666686"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WHATS YOUR NAME?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZm-zl-55m" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your name" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="tgW-LH-XfR" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333314" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -415,7 +415,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y3K-h2-Gbg">
<rect key="frame" x="0.0" y="99.333333333333371" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666686" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -423,16 +423,16 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="hWX-C0-soL">
<rect key="frame" x="0.0" y="258.66666666666669" width="370" height="116.33333333333331"/>
<rect key="frame" x="0.0" y="257.33333333333331" width="370" height="115"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CREATE YOUR PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fev-AX-lcQ" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your password" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4gw-z0-s4a" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333258" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666629" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -451,7 +451,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Shh!! Dont share your password with anyone." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3LF-iY-Hoi" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="99.333333333333258" width="370" height="17"/>
<rect key="frame" x="0.0" y="98.666666666666629" width="370" height="16.333333333333329"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -833,35 +833,35 @@ Sent to Your Parents Email</string>
<rect key="frame" x="0.0" y="107.66666666666669" width="430" height="790.33333333333326"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="aNK-S5-pik">
<rect key="frame" x="0.0" y="0.0" width="430" height="770"/>
<rect key="frame" x="0.0" y="0.0" width="430" height="766.33333333333337"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y9q-mR-AlW">
<rect key="frame" x="20" y="0.0" width="390" height="62.333333333333336"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="Krs-Zs-R6t">
<rect key="frame" x="20" y="62.333333333333343" width="390" height="447.33333333333326"/>
<rect key="frame" x="20" y="62.333333333333343" width="390" height="444.33333333333326"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Login to WOKA" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1T4-5K-cXT" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="390" height="32.666666666666664"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="31.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-ExtraBold" family="Exo 2" pointSize="27"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="EhK-1C-Xey">
<rect key="frame" x="0.0" y="102.66666666666666" width="390" height="344.66666666666674"/>
<rect key="frame" x="0.0" y="101.66666666666666" width="390" height="342.66666666666674"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="krT-0d-tCQ">
<rect key="frame" x="0.0" y="0.0" width="390" height="99.333333333333329"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="98.666666666666671"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="USERNAME" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Xc-wy-9mu" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="390" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="68c-1b-KSI" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333314" width="390" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666629" width="390" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -880,7 +880,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JQm-yr-A2M">
<rect key="frame" x="0.0" y="99.333333333333314" width="390" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666629" width="390" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -888,19 +888,19 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="fVp-fO-1fH">
<rect key="frame" x="0.0" y="129.33333333333331" width="390" height="135.33333333333331"/>
<rect key="frame" x="0.0" y="128.66666666666663" width="390" height="134"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="ebQ-va-83Q">
<rect key="frame" x="0.0" y="0.0" width="390" height="99.333333333333329"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="98.666666666666671"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BcT-5f-ded" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="390" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="iJE-dm-qal" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333314" width="390" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="390" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -919,7 +919,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2YT-HL-ug7">
<rect key="frame" x="0.0" y="99.333333333333314" width="390" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666686" width="390" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -927,7 +927,7 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yp6-2q-OZC" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="104.33333333333331" width="390" height="31"/>
<rect key="frame" x="0.0" y="103.66666666666669" width="390" height="30.333333333333343"/>
<color key="tintColor" name="TextDarkBlue"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Forgot Password">
@@ -940,7 +940,7 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OFt-kx-VfD" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="294.66666666666669" width="390" height="50"/>
<rect key="frame" x="0.0" y="292.66666666666669" width="390" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="Tle-PZ-1B4"/>
</constraints>
@@ -959,14 +959,14 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tOZ-1S-7K5">
<rect key="frame" x="20" y="509.66666666666669" width="390" height="124.66666666666669"/>
<rect key="frame" x="20" y="506.66666666666669" width="390" height="124.66666666666669"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Nnb-iQ-OQs">
<rect key="frame" x="20" y="634.33333333333337" width="390" height="105.66666666666663"/>
<rect key="frame" x="20" y="631.33333333333337" width="390" height="105"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ly3-jW-G7X" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="390" height="35.666666666666664"/>
<rect key="frame" x="0.0" y="0.0" width="390" height="35"/>
<color key="tintColor" name="TextDarkBlue"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Continue as a Guest">
@@ -977,7 +977,7 @@ Sent to Your Parents Email</string>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TYc-dA-ZOV" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="55.666666666666629" width="390" height="50"/>
<rect key="frame" x="0.0" y="55" width="390" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="sfz-a2-WZy"/>
</constraints>
@@ -994,7 +994,7 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sb4-yj-JJ2">
<rect key="frame" x="20" y="740" width="390" height="30"/>
<rect key="frame" x="20" y="736.33333333333337" width="390" height="30"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="RxX-pL-7Ux"/>
@@ -1063,25 +1063,25 @@ Sent to Your Parents Email</string>
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="Pjf-i3-BcY">
<rect key="frame" x="20" y="172.66666666666663" width="390" height="203"/>
<rect key="frame" x="20" y="172.66666666666663" width="390" height="201.33333333333337"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Forgot your Password?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="i7M-Ob-pCE" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="370" height="33.666666666666664"/>
<rect key="frame" x="10" y="0.0" width="370" height="32.666666666666664"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="28"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="Jlq-Ct-Mrz">
<rect key="frame" x="10" y="103.66666666666666" width="370" height="99.333333333333343"/>
<rect key="frame" x="10" y="102.66666666666666" width="370" height="98.666666666666657"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PLEASE GIVE US YOUR USERNAME" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCB-jL-yE4" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your username" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="wy2-0C-rxG" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333371" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -1100,7 +1100,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0ps-Ku-87z">
<rect key="frame" x="0.0" y="99.333333333333371" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666686" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -1111,16 +1111,16 @@ Sent to Your Parents Email</string>
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="NPA-IJ-SA5">
<rect key="frame" x="30" y="776" width="370" height="102"/>
<rect key="frame" x="30" y="776.66666666666663" width="370" height="101.33333333333337"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="We will send a reset code to email" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uv4-iY-Z87" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="370" height="17"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="16.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JJ0-wA-EP6" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="52" width="370" height="50"/>
<rect key="frame" x="0.0" y="51.333333333333371" width="370" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="I7D-T4-sU1"/>
</constraints>
@@ -1183,28 +1183,28 @@ Sent to Your Parents Email</string>
</constraints>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="ph5-wC-m3B">
<rect key="frame" x="20" y="172.66666666666666" width="390" height="341.33333333333337"/>
<rect key="frame" x="20" y="172.66666666666663" width="390" height="339"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Great! Select New Password" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QGk-Uc-mER" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="0.0" width="370" height="32.666666666666664"/>
<rect key="frame" x="10" y="0.0" width="370" height="31.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="27"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="40" translatesAutoresizingMaskIntoConstraints="NO" id="qzU-f1-tq1">
<rect key="frame" x="10" y="102.66666666666667" width="370" height="238.66666666666663"/>
<rect key="frame" x="10" y="101.66666666666664" width="370" height="237.33333333333337"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="1na-3A-stg">
<rect key="frame" x="0.0" y="0.0" width="370" height="99.333333333333329"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="98.666666666666671"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CREATE YOUR PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hYw-Vc-C9h">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter new password" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Skx-Ig-91N" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333371" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -1223,7 +1223,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ht0-v3-TeN">
<rect key="frame" x="0.0" y="99.333333333333371" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666686" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -1231,16 +1231,16 @@ Sent to Your Parents Email</string>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="Rwa-zV-eg9">
<rect key="frame" x="0.0" y="139.33333333333337" width="370" height="99.333333333333314"/>
<rect key="frame" x="0.0" y="138.66666666666669" width="370" height="98.666666666666686"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CONFIRM YOUR PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6LZ-Ed-gCK">
<rect key="frame" x="0.0" y="0.0" width="370" height="19.333333333333332"/>
<rect key="frame" x="0.0" y="0.0" width="370" height="18.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="confirm your password" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="JRR-Bk-5UP" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="34.333333333333314" width="370" height="50"/>
<rect key="frame" x="0.0" y="33.666666666666686" width="370" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
@@ -1259,7 +1259,7 @@ Sent to Your Parents Email</string>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="B3H-EX-OA7">
<rect key="frame" x="0.0" y="99.333333333333314" width="370" height="0.0"/>
<rect key="frame" x="0.0" y="98.666666666666686" width="370" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -1437,43 +1437,43 @@ Sent to Your Parents Email</string>
</scenes>
<designables>
<designable name="42K-Uu-lPQ">
<size key="intrinsicContentSize" width="8.3333333333333339" height="23.333333333333332"/>
<size key="intrinsicContentSize" width="6.666666666666667" height="22.666666666666668"/>
</designable>
<designable name="4gw-z0-s4a">
<size key="intrinsicContentSize" width="200.66666666666666" height="20"/>
<size key="intrinsicContentSize" width="198" height="19"/>
</designable>
<designable name="68c-1b-KSI">
<size key="intrinsicContentSize" width="201.66666666666666" height="21"/>
<size key="intrinsicContentSize" width="199" height="20.333333333333332"/>
</designable>
<designable name="81S-Fa-CiD">
<size key="intrinsicContentSize" width="8.3333333333333339" height="23.333333333333332"/>
<size key="intrinsicContentSize" width="6.666666666666667" height="22.666666666666668"/>
</designable>
<designable name="DSB-Ge-wNO">
<size key="intrinsicContentSize" width="169" height="21"/>
<size key="intrinsicContentSize" width="166" height="20.666666666666668"/>
</designable>
<designable name="Hcd-Mm-IxW">
<size key="intrinsicContentSize" width="8.3333333333333339" height="23.333333333333332"/>
<size key="intrinsicContentSize" width="6.666666666666667" height="22.666666666666668"/>
</designable>
<designable name="JRR-Bk-5UP">
<size key="intrinsicContentSize" width="217.66666666666666" height="20"/>
<size key="intrinsicContentSize" width="214.33333333333334" height="19"/>
</designable>
<designable name="MpT-bm-drv">
<size key="intrinsicContentSize" width="8.3333333333333339" height="23.333333333333332"/>
<size key="intrinsicContentSize" width="6.666666666666667" height="22.666666666666668"/>
</designable>
<designable name="Skx-Ig-91N">
<size key="intrinsicContentSize" width="199" height="20"/>
<size key="intrinsicContentSize" width="196.33333333333334" height="19"/>
</designable>
<designable name="iJE-dm-qal">
<size key="intrinsicContentSize" width="200.66666666666666" height="20"/>
<size key="intrinsicContentSize" width="198" height="19"/>
</designable>
<designable name="m50-FZ-yVO">
<size key="intrinsicContentSize" width="201.66666666666666" height="21"/>
<size key="intrinsicContentSize" width="199" height="20.666666666666668"/>
</designable>
<designable name="tgW-LH-XfR">
<size key="intrinsicContentSize" width="169.33333333333334" height="21"/>
<size key="intrinsicContentSize" width="168" height="20.666666666666668"/>
</designable>
<designable name="wy2-0C-rxG">
<size key="intrinsicContentSize" width="201.66666666666666" height="21"/>
<size key="intrinsicContentSize" width="199" height="20.666666666666668"/>
</designable>
</designables>
<resources>

View File

@@ -30,6 +30,7 @@ class LoginVC: UIViewController {
}
@IBAction func loginBtnTapped(_ sender: LocalisedElementsButton) {
vm.hideErrors()
PersistentStorage.shared.addOthersCount()
guard let userName = userNameTF.text , let pass = passwordTF.text else{return}
@@ -63,17 +64,20 @@ class LoginVC: UIViewController {
@IBAction func createAccountBtnTapped(_ sender: LocalisedElementsButton) {
PersistentStorage.shared.addOthersCount()
vm.hideErrors()
let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.selectAgeVC) as! SelectAgeVC
self.navigationController?.pushViewController(vc, animated: true)
}
@IBAction func continueGuestBtnTapped(_ sender: UIButton) {
vm.hideErrors()
PersistentStorage.shared.addOthersCount()
vm.guestLogin()
}
@IBAction func forgotPasswordBtnTapped(_ sender: UIButton) {
vm.hideErrors()
PersistentStorage.shared.addOthersCount()
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.resetPassUserNameVC) as! ResetPassUserNameVC

View File

@@ -76,18 +76,18 @@ class UserIntrestVC: UIViewController {
AuthFunc.shareInstance.regData.birthdate = dob
// Check for Gender.
if AuthFunc.shareInstance.regData.gender == nil{
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC
vcPush.contentLabel = K.ConstantString.genderSel.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
vcPush.mainTitleText = K.ConstantString.error.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
// vcPush.onDoneBlock = { isDone in }
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
self.present(vcPush, animated: true)
return
}
// if AuthFunc.shareInstance.regData.gender == nil{
// let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
// let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC
//
// vcPush.contentLabel = K.ConstantString.genderSel.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
// vcPush.mainTitleText = K.ConstantString.error.localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
// // vcPush.onDoneBlock = { isDone in }
// vcPush.modalPresentationStyle = .overCurrentContext
// vcPush.modalTransitionStyle = .crossDissolve
// self.present(vcPush, animated: true)
// return
// }
// Check for Intrest.
if AuthFunc.shareInstance.userType == .kid || vm.createChildAccount != nil{

View File

@@ -11,11 +11,12 @@ import Foundation
struct UserDataDM: Codable {
let result: ResultData?
// MARK: - Result
struct ResultData: Codable {
let id: Int?
var username, fullname: String?
// let gender: Gender?
var genderData: Gender?
let birthdate, email: String?
let avtar: String?
let avtarURL : String?
@@ -29,7 +30,7 @@ struct UserDataDM: Codable {
enum CodingKeys: String, CodingKey {
case id, username, fullname, birthdate, email, avtar
case avtarURL = "avtar_url"
// case gender
case genderData = "gender_data"
case userType = "user_type"
case languageMasterID = "language_master_id"
case lastLogin = "last_login"
@@ -66,8 +67,8 @@ struct UserDataDM: Codable {
// MARK: - Gender
struct Gender: Codable {
let id: Int?
let genderName: String?
var id: Int?
var genderName: String?
enum CodingKeys: String, CodingKey {
case id

View File

@@ -20,7 +20,7 @@ struct UserRegPostModel: Encodable {
var interest_topic_id: [Int]?
var avtar: String?
var add_child: String?
var one_signal_player_id : String?
var dictionaryRepresentation: [String: Any] {
return [
@@ -31,6 +31,7 @@ struct UserRegPostModel: Encodable {
"birthdate": birthdate ?? "",
"email": email ?? "",
"guardian_email": guardian_email ?? nil,
"one_signal_player_id" : one_signal_player_id ?? "",
"user_type": user_type ?? "",
"language_id": language_id ?? "",
"interest_topic_id": interest_topic_id ?? [],

View File

@@ -7,6 +7,7 @@
import UIKit
import Alamofire
import FirebaseAnalytics
class LoginVM{
@@ -37,11 +38,16 @@ class LoginVM{
vc.passwordTF.enablePasswordToggle()
vc.passwordTF.rightView?.isHidden = true
self.vc.view.addTapGesture {
let errorView = errorViews.object(forKey: self.vc.userNameTF)
if let errorView = errorView {
errorView.isHidden = true
}
self.vc.view.addTapGesture { [weak self] in
guard let self else{return}
hideErrors()
}
}
func hideErrors(){
let errorView = errorViews.object(forKey: self.vc.userNameTF)
if let errorView = errorView {
errorView.isHidden = true
}
}
@@ -65,7 +71,8 @@ class LoginVM{
func loginUser(){
let params: Parameters = [
"username": vc.userNameTF.text!,
"password": vc.passwordTF.text!
"password": vc.passwordTF.text!,
"one_signal_player_id": AuthFunc.shareInstance.getOneSignalID()
]
let header : HTTPHeaders = ["device-id" : AuthFunc.shareInstance.getDeviceUUID(),
"Accept-Language" : AuthFunc.shareInstance.languageSelected == .english ? "English" : "Hindi"]
@@ -141,9 +148,11 @@ class LoginVM{
let params: Parameters = [
"username": vc.userNameTF.text!,
"password": vc.passwordTF.text!,
"one_signal_player_id": AuthFunc.shareInstance.getOneSignalID(),
"is_activate" : activate ? "1" : "0" // if activate send 1
]
let header : HTTPHeaders = ["device-id" : AuthFunc.shareInstance.getDeviceUUID(),
"one_signal_player_id": AuthFunc.shareInstance.getOneSignalID(),
"Accept-Language" : AuthFunc.shareInstance.languageSelected == .english ? "English" : "Hindi"]
Utilities.startProgressHUD()
@@ -176,8 +185,8 @@ class LoginVM{
func guestLogin(){
let params: Parameters = [
"user_type": 3, // 1- kid , 2 - guardian , 3 - guest
"one_signal_player_id": "Test",
"language_id": AuthFunc.shareInstance.languageSelected == .english ? 1 : 2, //1-eng, 2 - hindi
"one_signal_player_id": AuthFunc.shareInstance.getOneSignalID(),
"device_type": 1 // 1- android , 2 - iOS
]
let header : HTTPHeaders = ["device-id" : AuthFunc.shareInstance.getDeviceUUID(),
@@ -194,8 +203,12 @@ class LoginVM{
case 1:
Utilities.dismissProgressHUD()
guard let dataUser = data.data else{return}
if let newUser = dataUser.newGuest, newUser == true{ // if guest is new fire the analytic event
Analytics.logEvent(K.AnalyticsEventKeys.guest_login_iOS, parameters: nil)
Analytics.logEvent(K.AnalyticsEventKeys.new_user_iOS, parameters: nil)
}
self.vc.toast(msg: data.message ?? "Unrecognised error" , time: 2) {
let userDataConverted = UserDataDM.ResultData(id: nil, username: dataUser.username, fullname: dataUser.fullname, birthdate: nil, email: nil, avtar: nil, avtarURL: nil, userType: "3", languageMasterID: nil, lastLogin: nil, rememberToken: nil, childDetail: nil, language: nil, alreadyLoggedIn: nil, isDeactive: nil)
let userDataConverted = UserDataDM.ResultData(id: nil, username: dataUser.username, fullname: dataUser.fullname, genderData: nil, birthdate: nil, email: nil, avtar: nil, avtarURL: nil, userType: "3", languageMasterID: nil, lastLogin: nil, rememberToken: nil, childDetail: nil, language: nil, alreadyLoggedIn: nil, isDeactive: nil)
AuthFunc.shareInstance.loginDefaults(data: userDataConverted)
}
default:

View File

@@ -7,6 +7,7 @@
import UIKit
import Alamofire
import FirebaseAnalytics
class SelectAvatarVM{
@@ -61,6 +62,11 @@ class SelectAvatarVM{
case 1:
Utilities.dismissProgressHUD()
if let avatarData = data.data?.result{
//for new user we will map individually in user signup and for overall we will map in newuser
Analytics.logEvent(K.AnalyticsEventKeys.user_signup_iOS, parameters: nil)
Analytics.logEvent(K.AnalyticsEventKeys.new_user_iOS, parameters: nil)
self.avatarData = avatarData
self.vc.collectionView.reloadData()
}
@@ -107,7 +113,6 @@ class SelectAvatarVM{
}
/*
Set Language id
*/
@@ -117,6 +122,8 @@ class SelectAvatarVM{
AuthFunc.shareInstance.regData.language_id = "1"
}
AuthFunc.shareInstance.regData.language_id = AuthFunc.shareInstance.getOneSignalID()
Utilities.startProgressHUD()
let headers : HTTPHeaders = ["device-id" : AuthFunc.shareInstance.getDeviceUUID(),

View File

@@ -22,6 +22,9 @@ class UserIntrestVM{
self.vc.datePicker.locale = loc
}
//set default gender to 0
AuthFunc.shareInstance.regData.gender = 0
/*
Setting the minimum and maximum date as per user type
*/

View File

@@ -10,7 +10,8 @@ import Foundation
extension K{
struct AnalyticsEventKeys{
static var guest_login_iOS = "guest_login_iOS"
static var user_signup = "user_signup"
static var user_signup_iOS = "user_signup_iOS"
static var new_user_iOS = "new_user_iOS"
}
}

View File

@@ -113,9 +113,10 @@ class OnBoardVM{
Guest Login
*/
func guestLogin(){
let params: Parameters = [
"user_type": 3, // 1- kid , 2 - guardian , 3 - guest
"one_signal_player_id": "Test",
"one_signal_player_id": AuthFunc.shareInstance.getOneSignalID(),
"language_id": AuthFunc.shareInstance.languageSelected == .english ? 1 : 2, //1-eng, 2 - hindi
"device_type": 1 // 1- android , 2 - iOS
]
@@ -137,10 +138,11 @@ class OnBoardVM{
if let newGuest = dataUser.newGuest, newGuest == true{
//Fire Analytics
Analytics.logEvent(K.AnalyticsEventKeys.guest_login_iOS, parameters: nil)
Analytics.logEvent(K.AnalyticsEventKeys.new_user_iOS, parameters: nil)
}
self.vc.toast(msg: data.message ?? "Unrecognised error" , time: 2) {
let userDataConverted = UserDataDM.ResultData(id: nil, username: dataUser.username, fullname: dataUser.fullname, birthdate: nil, email: nil, avtar: nil, avtarURL: nil, userType: "3", languageMasterID: nil, lastLogin: nil, rememberToken: nil, childDetail: nil, language: nil, alreadyLoggedIn: nil, isDeactive: nil)
let userDataConverted = UserDataDM.ResultData(id: nil, username: dataUser.username, fullname: dataUser.fullname, genderData: nil, birthdate: nil, email: nil, avtar: nil, avtarURL: nil, userType: "3", languageMasterID: nil, lastLogin: nil, rememberToken: nil, childDetail: nil, language: nil, alreadyLoggedIn: nil, isDeactive: nil)
AuthFunc.shareInstance.loginDefaults(data: userDataConverted)
}
default:

View File

@@ -45,9 +45,7 @@ class GamesListVC: UIViewController {
if self.isMovingFromParent {
// Back button was pressed
if let postID = vm.gameData[vm.indexToLoad].id{
PersistentStorage.shared.addGamesCount(postID: postID)
}
PersistentStorage.shared.addOthersCount()
}
}

View File

@@ -8,15 +8,23 @@
import UIKit
import WebKit
class GamesWebViewVC: UIViewController {
class GamesWebViewVC: UIViewController, WKNavigationDelegate,UIGestureRecognizerDelegate {
var url : String?
var orientation : ScreenOrientation?
var count = 0
var postID : Int?
@IBOutlet weak var clickView: UIView!
@IBOutlet weak var webView: WKWebView!
deinit{
// print("Deinit Game")
if let postID = self.postID{
PersistentStorage.shared.addGamesCount(postID: postID,count: count)
}
}
override func viewDidLoad() {
super.viewDidLoad()
@@ -35,15 +43,26 @@ class GamesWebViewVC: UIViewController {
let request = URLRequest(url: link)
webView.load(request)
webView.addTapGesture { [weak self] in
guard let self else{return}
count += 1
}
let tap = UITapGestureRecognizer(target: self, action: #selector(didTapMethod))
tap.numberOfTapsRequired = 1
tap.delegate = self
// Add the gesture recognizer to the web view
clickView.addGestureRecognizer(tap)
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
@objc func didTapMethod(){
count += 1
print(count)
}
@IBAction func backBtnTapped(_ sender: UIButton) {
if let postID = self.postID{
PersistentStorage.shared.addGamesCount(postID: postID)
PersistentStorage.shared.addOthersCount()
}
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
@@ -56,9 +75,7 @@ class GamesWebViewVC: UIViewController {
guard let self else{return}
switch mode{
case .yes:
if let postID = self.postID{
PersistentStorage.shared.addGamesCount(postID: postID)
}
if orientation == .landscape{
appDelegate.deviceOrientation = .portrait
let value = UIInterfaceOrientation.portrait.rawValue

View File

@@ -534,15 +534,27 @@
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="k9t-dv-nhb">
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UBq-Ug-nVj">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<wkWebViewConfiguration key="configuration" allowsAirPlayForMediaPlayback="NO" allowsPictureInPictureMediaPlayback="NO">
<dataDetectorTypes key="dataDetectorTypes"/>
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
<wkPreferences key="preferences"/>
</wkWebViewConfiguration>
</wkWebView>
<subviews>
<wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="k9t-dv-nhb">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<wkWebViewConfiguration key="configuration" allowsAirPlayForMediaPlayback="NO" allowsPictureInPictureMediaPlayback="NO">
<dataDetectorTypes key="dataDetectorTypes" none="YES"/>
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
<wkPreferences key="preferences"/>
</wkWebViewConfiguration>
</wkWebView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="k9t-dv-nhb" secondAttribute="trailing" id="280-OD-igM"/>
<constraint firstAttribute="bottom" secondItem="k9t-dv-nhb" secondAttribute="bottom" id="LwL-cf-cGz"/>
<constraint firstItem="k9t-dv-nhb" firstAttribute="top" secondItem="UBq-Ug-nVj" secondAttribute="top" id="OLz-JE-Ule"/>
<constraint firstItem="k9t-dv-nhb" firstAttribute="leading" secondItem="UBq-Ug-nVj" secondAttribute="leading" id="XhR-Si-hmd"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7Qp-yb-i2l">
<rect key="frame" x="7" y="58" width="35" height="35"/>
<color key="backgroundColor" name="ImageDarkBlue"/>
@@ -564,23 +576,24 @@
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="UAe-my-8xP"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="UBq-Ug-nVj" firstAttribute="top" secondItem="8Dy-BS-4tC" secondAttribute="top" id="9CL-yd-6Hq"/>
<constraint firstItem="UBq-Ug-nVj" firstAttribute="leading" secondItem="UAe-my-8xP" secondAttribute="leading" id="9hb-Yg-ACx"/>
<constraint firstItem="7Qp-yb-i2l" firstAttribute="top" secondItem="UAe-my-8xP" secondAttribute="top" constant="10" id="Oxh-34-kbI"/>
<constraint firstItem="k9t-dv-nhb" firstAttribute="top" secondItem="8Dy-BS-4tC" secondAttribute="top" id="Tj3-by-0aA"/>
<constraint firstItem="k9t-dv-nhb" firstAttribute="leading" secondItem="UAe-my-8xP" secondAttribute="leading" id="dmX-Nj-8mc"/>
<constraint firstAttribute="bottom" secondItem="k9t-dv-nhb" secondAttribute="bottom" id="nbu-MB-upl"/>
<constraint firstAttribute="bottom" secondItem="UBq-Ug-nVj" secondAttribute="bottom" id="lOx-rP-1sz"/>
<constraint firstItem="7Qp-yb-i2l" firstAttribute="leading" secondItem="UAe-my-8xP" secondAttribute="leading" constant="7" id="otO-uz-8gX"/>
<constraint firstItem="UAe-my-8xP" firstAttribute="trailing" secondItem="k9t-dv-nhb" secondAttribute="trailing" id="zmC-r9-WYr"/>
<constraint firstItem="UBq-Ug-nVj" firstAttribute="trailing" secondItem="UAe-my-8xP" secondAttribute="trailing" id="xcS-Cj-AOE"/>
</constraints>
</view>
<connections>
<outlet property="clickView" destination="UBq-Ug-nVj" id="AR4-7x-xFq"/>
<outlet property="webView" destination="k9t-dv-nhb" id="3fK-U0-3Dd"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="hXA-NY-nAf" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1580" y="-1"/>
<point key="canvasLocation" x="1579.7101449275362" y="-1.3392857142857142"/>
</scene>
</scenes>
<resources>

View File

@@ -51,6 +51,7 @@ class ExploreWokaVC: UIViewController {
@IBAction func btnTapped(_ sender: UIButton) {
switch sender{
case wokaFmBtn:
PersistentStorage.shared.addRadioCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -62,6 +63,7 @@ class ExploreWokaVC: UIViewController {
}
}
case webSeriesBtn:
PersistentStorage.shared.addOthersCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -73,6 +75,7 @@ class ExploreWokaVC: UIViewController {
}
}
case gamesBtn:
PersistentStorage.shared.addOthersCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -84,6 +87,7 @@ class ExploreWokaVC: UIViewController {
}
}
case audioBookBtn:
PersistentStorage.shared.addOthersCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -95,6 +99,7 @@ class ExploreWokaVC: UIViewController {
}
}
case karaokeBtn:
PersistentStorage.shared.addOthersCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -106,6 +111,7 @@ class ExploreWokaVC: UIViewController {
}
}
case shopBtn:
PersistentStorage.shared.addOthersCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -117,6 +123,7 @@ class ExploreWokaVC: UIViewController {
}
}
case liveTvBtn:
PersistentStorage.shared.addLiveTVCount()
self.dismiss(animated: true) {
switch K.GVar.topView{
case .theme1:
@@ -145,6 +152,7 @@ class ExploreWokaVC: UIViewController {
@IBAction func closeTapped(_ sender: UIButton) {
PersistentStorage.shared.addOthersCount()
self.dismiss(animated: true)
}
}

View File

@@ -129,6 +129,7 @@ class MyListVC: UIViewController{
}
@IBAction func viewAllBtnTapped(_ sender: UIButton) {
PersistentStorage.shared.addOthersCount()
switch sender{
case webSeriesHindiBtn:
let sb = UIStoryboard(name: K.StoryBoard.home, bundle: nil)
@@ -170,12 +171,19 @@ extension MyListVC : CollectionViewSRC{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
switch collectionView{
case webSeriesCV:
if MyListDataTemp.shareInstance.favListingData?.showData?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{
if MyListDataTemp.shareInstance.favListingData?.showData?.english?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{
webSeriesEnglishStack.isHidden = true
}else{
webSeriesEnglishStack.isHidden = false
}
return MyListDataTemp.shareInstance.favListingData?.showData?.count ?? 0
return MyListDataTemp.shareInstance.favListingData?.showData?.english?.count ?? 0
case webSeriesHindiCV:
if MyListDataTemp.shareInstance.favListingData?.showData?.hindi?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{
webSeriesHindiStack.isHidden = true
}else{
webSeriesHindiStack.isHidden = false
}
return MyListDataTemp.shareInstance.favListingData?.showData?.hindi?.count ?? 0
case audioBooksCV:
if MyListDataTemp.shareInstance.favListingData?.audioData?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{
audioBooksStack.isHidden = true
@@ -197,13 +205,6 @@ extension MyListVC : CollectionViewSRC{
gamesStack.isHidden = false
}
return MyListDataTemp.shareInstance.favListingData?.gameData?.count ?? 0
case webSeriesHindiCV:
if MyListDataTemp.shareInstance.webSeriesHindi.count == 0{
webSeriesHindiStack.isHidden = true
}else{
webSeriesHindiStack.isHidden = false
}
return MyListDataTemp.shareInstance.webSeriesHindi.count
default:
return 0
}
@@ -214,12 +215,13 @@ extension MyListVC : CollectionViewSRC{
switch collectionView{
case webSeriesCV:
if let data = MyListDataTemp.shareInstance.favListingData?.showData?[indexPath.row]{
if let data = MyListDataTemp.shareInstance.favListingData?.showData?.english?[indexPath.row]{
cell.setData(data: data)
}
case webSeriesHindiCV:
let data = MyListDataTemp.shareInstance.webSeriesHindi[indexPath.row]
cell.setData(data: data)
if let data = MyListDataTemp.shareInstance.favListingData?.showData?.hindi?[indexPath.row]{
cell.setData(data: data)
}
case audioBooksCV:
if let data = MyListDataTemp.shareInstance.favListingData?.audioData?[indexPath.row]{
cell.setAudioData(data: data)
@@ -233,250 +235,255 @@ extension MyListVC : CollectionViewSRC{
cell.setGameData(data: data)
}
default:
if let data = MyListDataTemp.shareInstance.favListingData?.showData?[indexPath.row]{
cell.setData(data: data)
}
break
// if let data = MyListDataTemp.shareInstance.favListingData?.showData?[indexPath.row]{
// cell.setData(data: data)
// }
}
cell.btnTapped = { [self] (type) -> Void in
updateFavLikes(cv: collectionView, type: type, index: indexPath.row)
// updateFavLikes(cv: collectionView, type: type, index: indexPath.row)
}
return cell
}
// Updates from Cell Clicks
func updateFavLikes(cv : UICollectionView , type : FavCellCLick, index : Int){
switch cv{
case webSeriesCV:
guard let data = MyListDataTemp.shareInstance.favListingData?.showData?[index] else{return}
switch type {
case .favourite:
guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType,let categoryID = data.categoryMasterID else{return}
if isFav{
vm.removeFavourite(postID: postID, postType: postType, categoryID: categoryID, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.showData?.remove(at: index)
webSeriesCV.reloadData()
vm.checkNil()
}
}
}
case .liked:
guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isLiked{
vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = false
MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! -= 1
webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = false
MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! -= 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
}
}
}else{
vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = true
MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! += 1
webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = true
MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! += 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
}
}
}
}
case webSeriesHindiCV:
let data = MyListDataTemp.shareInstance.webSeriesHindi[index]
switch type {
case .favourite:
guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType,let categoryID = data.categoryMasterID else{return}
if isFav{
vm.removeFavourite(postID: postID, postType: postType, categoryID: categoryID, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.webSeriesHindi.remove(at: index)
webSeriesHindiCV.reloadData()
vm.checkNil()
}
}
}
case .liked: // Hindi Data
guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isLiked{
vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = false
MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! -= 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
for (i,element) in showData.enumerated(){
if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = false
MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! -= 1
webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
}
}
}else{
vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = true
MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! += 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
for (i,element) in showData.enumerated(){
if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = true
MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! += 1
webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
}
}
}
}
case audioBooksCV:
guard let data = MyListDataTemp.shareInstance.favListingData?.audioData?[index] else{return}
switch type {
case .favourite:
guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isFav{
vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.audioData?.remove(at: index)
audioBooksCV.reloadData()
vm.checkNil()
}
}
}
case .liked:
guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isLiked{
vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.audioData?[index].isLiked = false
MyListDataTemp.shareInstance.favListingData?.audioData?[index].likesCount! -= 1
audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
}
}
}else{
vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.audioData?[index].isLiked = true
MyListDataTemp.shareInstance.favListingData?.audioData?[index].likesCount! += 1
audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
}
}
}
}
case karaokeCV:
guard let data = MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index] else{return}
switch type {
case .favourite:
guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isFav{
vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.singKaraokeData?.remove(at: index)
karaokeCV.reloadData()
vm.checkNil()
}
}
}
case .liked:
guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isLiked{
vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].isLiked = false
MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].likesCount! -= 1
karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
}
}
}else{
vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].isLiked = true
MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].likesCount! += 1
karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
}
}
}
}
case gamesCV:
guard let data = MyListDataTemp.shareInstance.favListingData?.gameData?[index] else{return}
switch type {
case .favourite:
guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isFav{
vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.gameData?.remove(at: index)
gamesCV.reloadData()
vm.checkNil()
}
}
}
case .liked:
guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
if isLiked{
vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = false
MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! -= 1
gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
}
}
}else{
vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
if isDone{
MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = true
MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! += 1
gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
}
}
}
}
default:
break
}
}
// func updateFavLikes(cv : UICollectionView , type : FavCellCLick, index : Int){
// switch cv{
// case webSeriesCV:
// guard let data = MyListDataTemp.shareInstance.favListingData?.showData?[index] else{return}
// switch type {
// case .favourite:
// guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType,let categoryID = data.categoryMasterID else{return}
// if isFav{
// vm.removeFavourite(postID: postID, postType: postType, categoryID: categoryID, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.showData?.remove(at: index)
// webSeriesCV.reloadData()
// vm.checkNil()
// }
// }
// }
// case .liked:
// guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isLiked{
// vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! -= 1
// webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
//
// for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
// if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
// MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = false
// MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! -= 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
// }
// }
// }else{
// vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! += 1
// webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
//
// for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
// if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
// MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = true
// MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! += 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
// }
// }
// }
// }
// case webSeriesHindiCV:
// let data = MyListDataTemp.shareInstance.webSeriesHindi[index]
// switch type {
// case .favourite:
// guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType,let categoryID = data.categoryMasterID else{return}
// if isFav{
// vm.removeFavourite(postID: postID, postType: postType, categoryID: categoryID, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.webSeriesHindi.remove(at: index)
// webSeriesHindiCV.reloadData()
// vm.checkNil()
// }
// }
// }
// case .liked: // Hindi Data
// guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isLiked{
// vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = false
// MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! -= 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
//
// guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
//
// for (i,element) in showData.enumerated(){
// if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
// MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! -= 1
// webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
//
// }
// }
// }else{
// vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = true
// MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! += 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
//
// guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
//
// for (i,element) in showData.enumerated(){
// if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
// MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! += 1
// webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
// }
// }
// }
// }
// case audioBooksCV:
// guard let data = MyListDataTemp.shareInstance.favListingData?.audioData?[index] else{return}
// switch type {
// case .favourite:
// guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isFav{
// vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.audioData?.remove(at: index)
// audioBooksCV.reloadData()
// vm.checkNil()
// }
// }
// }
// case .liked:
// guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isLiked{
// vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.audioData?[index].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.audioData?[index].likesCount! -= 1
// audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
// }
// }
// }else{
// vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.audioData?[index].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.audioData?[index].likesCount! += 1
// audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
// }
// }
// }
// }
// case karaokeCV:
// guard let data = MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index] else{return}
//
// switch type {
// case .favourite:
// guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isFav{
// vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.singKaraokeData?.remove(at: index)
// karaokeCV.reloadData()
// vm.checkNil()
// }
// }
// }
// case .liked:
// guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isLiked{
// vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].likesCount! -= 1
// karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
// }
// }
// }else{
// vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].likesCount! += 1
// karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
// }
// }
// }
// }
// case gamesCV:
// guard let data = MyListDataTemp.shareInstance.favListingData?.gameData?[index] else{return}
//
// switch type {
// case .favourite:
// guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isFav{
// vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.gameData?.remove(at: index)
// gamesCV.reloadData()
// vm.checkNil()
// }
// }
// }
// case .liked:
// guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return}
// if isLiked{
// vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! -= 1
// gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
// }
// }
// }else{
// vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in
// if isDone{
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! += 1
// gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
// }
// }
// }
// }
// default:
// break
// }
// }
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
switch collectionView{
case webSeriesCV:
// 18- hindi , 1- english
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData?[indexPath.row] else{return}
PersistentStorage.shared.addWebSeries(catID: 1, postID: showData.id ?? 0)
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData?.english?[indexPath.row] else{return}
// PersistentStorage.shared.addWebSeries(catID: 1, postID: showData.id ?? 0)
if let showID = showData.id{
PersistentStorage.shared.addWebSeries(catID: 1, postID: showID, postType: .series)
}
let showDataModified = WebSeriesShowListDM.ShowDatum(id: showData.id, title: showData.title, description: showData.description, thumbnailPath: showData.thumbnailPath, showType: showData.showType, totalSeasons: showData.totalSeasons, totalEpisodes: showData.totalEpisodes, categoryMasterID: nil, ageRangeMasterID: nil, genderMasterID: showData.genderMasterID, contentMoreDetails: showData.contentMoreDetails, seasonData: nil, categoryData: nil, ageRangeData: nil, genderData: nil, markAsFavourite: showData.markAsFavourite, isLiked: showData.isLiked, likedCategoryIDS: nil, favouriteCategoryIDS: ValueWrapper.stringValue(showData.bookmarkCategoryIDS ?? "1") , likesCount: showData.likesCount, viewsCount: showData.viewsCount, bookmarkCount: showData.bookmarkCount)
@@ -484,13 +491,15 @@ extension MyListVC : CollectionViewSRC{
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.WebSeries.webSeriesSeasonVC) as! WebSeriesSeasonVC
vcPush.vm.showData = showDataModified
vcPush.vm.indexSelected = indexPath.row
vcPush.likeFavDelegate = self
// vcPush.likeFavDelegate = self
vcPush.vm.categoryID = 1
self.navigationController?.pushViewController(vcPush, animated: true)
self.vm.selectedCollection = .webSeriesCV
case webSeriesHindiCV:
let showData = MyListDataTemp.shareInstance.webSeriesHindi[indexPath.row]
PersistentStorage.shared.addWebSeries(catID: 18, postID: showData.id ?? 0)
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData?.hindi?[indexPath.row] else{return}
if let showID = showData.id{
PersistentStorage.shared.addWebSeries(catID: 18, postID: showID, postType: .series)
}
let showDataModified = WebSeriesShowListDM.ShowDatum(id: showData.id, title: showData.title, description: showData.description, thumbnailPath: showData.thumbnailPath, showType: showData.showType, totalSeasons: showData.totalSeasons, totalEpisodes: showData.totalEpisodes, categoryMasterID: nil, ageRangeMasterID: nil, genderMasterID: showData.genderMasterID, contentMoreDetails: showData.contentMoreDetails, seasonData: nil, categoryData: nil, ageRangeData: nil, genderData: nil, markAsFavourite: showData.markAsFavourite, isLiked: showData.isLiked, likedCategoryIDS: nil, favouriteCategoryIDS: ValueWrapper.stringValue(showData.bookmarkCategoryIDS ?? "1") , likesCount: showData.likesCount, viewsCount: showData.viewsCount, bookmarkCount: showData.bookmarkCount)
@@ -498,43 +507,49 @@ extension MyListVC : CollectionViewSRC{
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.WebSeries.webSeriesSeasonVC) as! WebSeriesSeasonVC
vcPush.vm.showData = showDataModified
vcPush.vm.indexSelected = indexPath.row
vcPush.likeFavDelegate = self
// vcPush.likeFavDelegate = self
vcPush.vm.categoryID = 18
self.navigationController?.pushViewController(vcPush, animated: true)
self.vm.selectedCollection = .webSeriesHindiCV
case audioBooksCV:
guard let audioData = MyListDataTemp.shareInstance.favListingData?.audioData?[indexPath.row] else{return}
if let postID = audioData.id{
PersistentStorage.shared.addAudioCount(postID: postID)
}
let sb = UIStoryboard(name: K.StoryBoard.audioBooks, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.AudioBooks.audioBookDetailsVC) as! AudioBookDetailsVC
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
vcPush.audioData = audioData
vcPush.delegate = self
// vcPush.delegate = self
self.vm.selectedCollection = .audioBooksCV
self.present(vcPush, animated: true)
case karaokeCV:
guard let karaokeData = MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[indexPath.row] else{return}
if let postID = karaokeData.id{
PersistentStorage.shared.addKaraokeCount(postID: postID)
}
let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Karaoke.karaokeDetailsVC) as! KaraokeDetailsVC
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
vcPush.karaokeData = karaokeData
vcPush.karaokeIndex = indexPath.row
vcPush.delegate = self
// vcPush.delegate = self
self.vm.selectedCollection = .karaokeCV
self.present(vcPush, animated: true)
case gamesCV:
guard let gameData = MyListDataTemp.shareInstance.favListingData?.gameData?[indexPath.row] else{return}
if let postID = gameData.id{
PersistentStorage.shared.addGamesCount(postID: postID)
}
let sb = UIStoryboard(name: K.StoryBoard.Games, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Games.gamesDetailVC) as! GamesDetailVC
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
vcPush.gameData = gameData
vcPush.gameIndex = indexPath.row
vcPush.delegate = self
// vcPush.delegate = self
self.vm.selectedCollection = .gamesCV
self.present(vcPush, animated: true)
default:
@@ -545,147 +560,147 @@ extension MyListVC : CollectionViewSRC{
}
// MARK: - Delegate for reload
extension MyListVC : ReloadSeriesFavLike{
//extension MyListVC : ReloadSeriesFavLike{
//Updates from details
func updateRows(index: Int, type: FavCellCLick, isFav: Bool?, isLike: Bool?, id: Int?) {
switch vm.selectedCollection {
case .webSeriesCV:
if let isLike{
switch isLike{
case true:
MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = true
MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! += 1
webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = true
MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! += 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
case false:
MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = false
MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! -= 1
webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = false
MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! -= 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
}
}
case .webSeriesHindiCV:
if let isLike{
switch isLike{
case true:
MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = true
MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! += 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
for (i,element) in showData.enumerated(){
if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = true
MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! += 1
webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
case false:
MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = false
MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! -= 1
webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
vm.checkNil()
guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
for (i,element) in showData.enumerated(){
if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = false
MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! -= 1
webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
}
}
}
}
case .gamesCV:
if let isLike{
switch isLike{
case true:
MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = true
MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! += 1
gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
case false:
MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = false
MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! -= 1
gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
}
}
if let isFav{
switch isFav{
case true:
self.gamesCV.reloadData()
self.vm.checkNil()
case false:
self.gamesCV.reloadData()
self.vm.checkNil()
}
}
case .karaokeCV:
if let isLike{
switch isLike{
case true:
karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
case false:
karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
}
}
if let isFav{
switch isFav{
case true:
self.karaokeCV.reloadData()
self.vm.checkNil()
case false:
self.karaokeCV.reloadData()
self.vm.checkNil()
}
}
case .audioBooksCV:
if let isLike{
switch isLike{
case true:
audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
case false:
audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
}
}
if let isFav{
switch isFav{
case true:
self.audioBooksCV.reloadData()
self.vm.checkNil()
case false:
self.audioBooksCV.reloadData()
self.vm.checkNil()
}
}
default:
break
}
}
}
// func updateRows(index: Int, type: FavCellCLick, isFav: Bool?, isLike: Bool?, id: Int?) {
// switch vm.selectedCollection {
// case .webSeriesCV:
//
// if let isLike{
// switch isLike{
// case true:
// MyListDataTemp.shareInstance.favListingData?.showData?.english?[index].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.showData?.english?[index].likesCount! += 1
// webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
//
// for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
// if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
// MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = true
// MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! += 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
// case false:
// MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! -= 1
// webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
//
// for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){
// if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{
// MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = false
// MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! -= 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
// }
// }
// case .webSeriesHindiCV:
// if let isLike{
// switch isLike{
// case true:
// MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = true
// MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! += 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
//
// guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
//
// for (i,element) in showData.enumerated(){
// if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
// MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! += 1
// webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
// case false:
// MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = false
// MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! -= 1
// webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// vm.checkNil()
//
// guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return}
//
// for (i,element) in showData.enumerated(){
// if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{
// MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! -= 1
// webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)])
// }
// }
//
// }
// }
// case .gamesCV:
// if let isLike{
// switch isLike{
// case true:
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = true
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! += 1
// gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// case false:
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = false
// MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! -= 1
// gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// }
// }
//
// if let isFav{
// switch isFav{
// case true:
// self.gamesCV.reloadData()
// self.vm.checkNil()
// case false:
// self.gamesCV.reloadData()
// self.vm.checkNil()
// }
// }
//
// case .karaokeCV:
// if let isLike{
// switch isLike{
// case true:
// karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// case false:
// karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// }
// }
//
// if let isFav{
// switch isFav{
// case true:
// self.karaokeCV.reloadData()
// self.vm.checkNil()
// case false:
// self.karaokeCV.reloadData()
// self.vm.checkNil()
// }
// }
// case .audioBooksCV:
// if let isLike{
// switch isLike{
// case true:
// audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// case false:
// audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)])
// }
// }
//
// if let isFav{
// switch isFav{
// case true:
// self.audioBooksCV.reloadData()
// self.vm.checkNil()
// case false:
// self.audioBooksCV.reloadData()
// self.vm.checkNil()
// }
// }
// default:
// break
//
// }
// }
//}
// MARK: - Collection Flow Layout

View File

@@ -80,7 +80,9 @@ extension MyListViewAllVC : TableViewSRC{
break
case 6://Games
guard let gameData = vm.favListingData?.gameData?[indexPath.row] else{return}
if let postID = gameData.id{
PersistentStorage.shared.addGamesCount(postID: postID)
}
let sb = UIStoryboard(name: K.StoryBoard.Games, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Games.gamesDetailVC) as! GamesDetailVC
vcPush.modalPresentationStyle = .overCurrentContext
@@ -89,6 +91,9 @@ extension MyListViewAllVC : TableViewSRC{
self.present(vcPush, animated: true)
case 7: // audio books
guard let audioData = vm.favListingData?.audioData?[indexPath.row] else{return}
if let postID = audioData.id{
PersistentStorage.shared.addAudioCount(postID: postID)
}
let sb = UIStoryboard(name: K.StoryBoard.audioBooks, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.AudioBooks.audioBookDetailsVC) as! AudioBookDetailsVC
vcPush.modalPresentationStyle = .overCurrentContext
@@ -98,6 +103,9 @@ extension MyListViewAllVC : TableViewSRC{
self.present(vcPush, animated: true)
case 8: //KAraoke
guard let karaokeData = vm.favListingData?.singKaraokeData?[indexPath.row] else{return}
if let postID = karaokeData.id{
PersistentStorage.shared.addKaraokeCount(postID: postID)
}
let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Karaoke.karaokeDetailsVC) as! KaraokeDetailsVC
vcPush.modalPresentationStyle = .overCurrentContext

View File

@@ -14,7 +14,7 @@ struct FavouriteListingDM: Codable {
// MARK: - Result
struct ResultData: Codable {
let totalRecords: Int?
var showData: [ShowDatum]?
var showData: ShowData?
var videoData: [Datum]?
var gameData: [GamesListDM.GameDatum]?
var singKaraokeData : [KaraokeListingDM.KaraokeDatum]?
@@ -73,6 +73,10 @@ struct FavouriteListingDM: Codable {
}
}
// MARK: - ShowData
struct ShowData: Codable {
var hindi, english: [ShowDatum]?
}
// MARK: - ShowDatum
struct ShowDatum: Codable {
let id: Int?

View File

@@ -14,7 +14,7 @@ class MyListDataTemp{
var favListingData : FavouriteListingDM.ResultData?
var webSeriesHindi = [FavouriteListingDM.ResultData.ShowDatum]()
// var webSeriesHindi = [FavouriteListingDM.ResultData.ShowDatum]()
var isDatafetched = false

View File

@@ -135,7 +135,7 @@ class MyListVM{
self.refreshControl.endRefreshing()
Utilities.dismissProgressHUD()
self.vc.toast(msg: data.message ?? "Unrecognised error" , time: 2)
MyListDataTemp.shareInstance.webSeriesHindi.removeAll()
// MyListDataTemp.shareInstance.webSeriesHindi.removeAll()
MyListDataTemp.shareInstance.favListingData = nil
// make this true if mylist is loaded once
MyListDataTemp.shareInstance.isDatafetched = true
@@ -150,62 +150,62 @@ class MyListVM{
Utilities.dismissProgressHUD()
guard let data = data.data?.result else{return}
MyListDataTemp.shareInstance.favListingData = nil
MyListDataTemp.shareInstance.webSeriesHindi.removeAll()
// MyListDataTemp.shareInstance.webSeriesHindi.removeAll()
MyListDataTemp.shareInstance.favListingData = data
if var hindiData = MyListDataTemp.shareInstance.favListingData?.showData{
/*
Taking out the hindi series , 1-> English , 18-> Hindi
And the saving it to hindi series, also modify the bookmark category ids
*/
MyListDataTemp.shareInstance.webSeriesHindi = hindiData.compactMap { $0 }.filter {
($0.bookmarkCategoryIDS?.components(separatedBy: ",").first == "18" || $0.bookmarkCategoryIDS?.components(separatedBy: ",").last == "18")
}.map { element -> FavouriteListingDM.ResultData.ShowDatum in
var modifiedElement = element
modifiedElement.bookmarkCategoryIDS = "18"
modifiedElement.categoryMasterID = "18"
return modifiedElement
}
if let data = MyListDataTemp.shareInstance.favListingData?.showData{
var indicesToRemove = [Int]()
// Deleting the hindi series from main (those with category ID "18")
for (index, element) in data.enumerated() {
if let bookMarkCatID = element.bookmarkCategoryIDS?.components(separatedBy: ","){
if bookMarkCatID.count > 1{ // means multiple language
/*
if its greater than one , its for sure we have extracted the hindi episode
*/
hindiData[index].bookmarkCategoryIDS = "1"
}else{ // means single language
if bookMarkCatID.first == "18"{
indicesToRemove.append(index)
}
}
}
}
// Remove items in reverse order to avoid index shifting issues
for index in indicesToRemove.reversed() {
hindiData.remove(at: index)
}
}
// Updating the showData with the filtered list
// MyListDataTemp.shareInstance.favListingData?.showData = hindiData.map({$0.categoryMasterID = 1})
MyListDataTemp.shareInstance.favListingData?.showData = hindiData.map { item in
var modifiedItem = item
modifiedItem.categoryMasterID = "1"
return modifiedItem
}
// make this true if mylist is loaded once
MyListDataTemp.shareInstance.isDatafetched = true
}
// if var hindiData = MyListDataTemp.shareInstance.favListingData?.showData{
//
// /*
// Taking out the hindi series , 1-> English , 18-> Hindi
// And the saving it to hindi series, also modify the bookmark category ids
// */
// MyListDataTemp.shareInstance.webSeriesHindi = hindiData.compactMap { $0 }.filter {
// ($0.bookmarkCategoryIDS?.components(separatedBy: ",").first == "18" || $0.bookmarkCategoryIDS?.components(separatedBy: ",").last == "18")
// }.map { element -> FavouriteListingDM.ResultData.ShowDatum in
// var modifiedElement = element
// modifiedElement.bookmarkCategoryIDS = "18"
// modifiedElement.categoryMasterID = "18"
// return modifiedElement
// }
//
// if let data = MyListDataTemp.shareInstance.favListingData?.showData{
// var indicesToRemove = [Int]()
//
// // Deleting the hindi series from main (those with category ID "18")
// for (index, element) in data.enumerated() {
// if let bookMarkCatID = element.bookmarkCategoryIDS?.components(separatedBy: ","){
// if bookMarkCatID.count > 1{ // means multiple language
// /*
// if its greater than one , its for sure we have extracted the hindi episode
// */
// hindiData[index].bookmarkCategoryIDS = "1"
// }else{ // means single language
// if bookMarkCatID.first == "18"{
// indicesToRemove.append(index)
// }
// }
// }
// }
//
// // Remove items in reverse order to avoid index shifting issues
// for index in indicesToRemove.reversed() {
// hindiData.remove(at: index)
// }
// }
//
//
// // Updating the showData with the filtered list
//// MyListDataTemp.shareInstance.favListingData?.showData = hindiData.map({$0.categoryMasterID = 1})
// MyListDataTemp.shareInstance.favListingData?.showData = hindiData.map { item in
// var modifiedItem = item
// modifiedItem.categoryMasterID = "1"
// return modifiedItem
// }
//
// // make this true if mylist is loaded once
// MyListDataTemp.shareInstance.isDatafetched = true
// }
reloadCollections()
feedbackGenerator.impactOccurred()
checkNil()
@@ -247,19 +247,25 @@ class MyListVM{
vc.gamesBtn.isHidden = true
}
if let webbSeriesEnglishCount = favListing.showData?.count , webbSeriesEnglishCount >= 3{
if let webbSeriesEnglishCount = favListing.showData?.english?.count , webbSeriesEnglishCount >= 3{
vc.webSeriesBtn.isHidden = false
}else{
vc.webSeriesBtn.isHidden = true
}
if let hindiSeriesCount = favListing.showData?.hindi?.count , hindiSeriesCount >= 3{
vc.webSeriesHindiBtn.isHidden = false
}else{
vc.webSeriesHindiBtn.isHidden = true
}
}
let hindiListing = MyListDataTemp.shareInstance.webSeriesHindi
if hindiListing.count >= 3{
vc.webSeriesHindiBtn.isHidden = false
}else{
vc.webSeriesHindiBtn.isHidden = true
}
// let hindiListing = MyListDataTemp.shareInstance.webSeriesHindi
// if hindiListing.count >= 3{
// vc.webSeriesHindiBtn.isHidden = false
// }else{
// vc.webSeriesHindiBtn.isHidden = true
// }
}
// MARK: - Like , unlike

View File

@@ -41,5 +41,7 @@
<string>audio</string>
<string>remote-notification</string>
</array>
<key>NSUserNotificationsUsageDescription</key>
<string>You need to allow for notifications to keep you updated about the content.</string>
</dict>
</plist>

View File

@@ -8,6 +8,7 @@
import Foundation
import AVFoundation
import UIKit
import OneSignalFramework
enum GetSet{
case get
@@ -60,6 +61,11 @@ class AuthFunc{
return UIDevice.current.identifierForVendor!.uuidString
}
//This will return oneplayer signal id
func getOneSignalID() -> String{
return OneSignal.User.pushSubscription.id ?? ""
}
// Sets authentication ID and password from the app's info dictionary
func setAuthIDPass(){
if let id = Bundle.main.infoDictionary?["API_KEY_ID"] as? String{

View File

@@ -10,12 +10,15 @@ import Lottie
import IQKeyboardManagerSwift
import JWPlayerKit
import Firebase
import OneSignalFramework
let appDelegate = UIApplication.shared.delegate as! AppDelegate
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var deviceOrientation = UIInterfaceOrientationMask.portrait
@@ -31,7 +34,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//
//Initialize Firebase
// FirebaseApp.configure()
@@ -45,6 +48,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// Set the authentication ID Pass after app starts
AuthFunc.shareInstance.setAuthIDPass()
UNUserNotificationCenter.current().delegate = self
// OneSignal initialization
OneSignal.initialize("f9674e6f-75fb-49e8-8379-4f2ed2a880b8", withLaunchOptions: launchOptions)
OneSignal.Notifications.requestPermission()
// Add your AppDelegate as an obsserver
OneSignal.Notifications.addClickListener(self)
OneSignal.Notifications.addForegroundLifecycleListener(self)
// Set the toast defaults
setupToast()
@@ -112,3 +124,18 @@ extension AppDelegate {
}
}
// MARK: - Notification Click Handler
extension AppDelegate : OSNotificationClickListener, OSNotificationLifecycleListener, UNUserNotificationCenterDelegate{
//Handle on click event
func onClick(event: OSNotificationClickEvent) {
// print("event")
// Respond to notification click
}
func onWillDisplay(event: OSNotificationWillDisplayEvent) {
print("Will Display")
}
}

View File

@@ -78,7 +78,7 @@ struct APIEndPoints {
static let blogs = makeURL(path: "blogs")
static let song_listing = makeURL(path: "song_listing")
static let get_user_notifications = makeURL(path: "get_user_notifications")
static let favourite_listing = makeURL(path: "favourite_listing")
static let favourite_listing = makeURL(path: "v2/favourite_listing")
//Post Like Unlike
static let post_like = makeURL(path: "post_like")

View File

@@ -519,6 +519,42 @@
</objects>
<point key="canvasLocation" x="2750.7246376811595" y="2.6785714285714284"/>
</scene>
<!--View Controller-->
<scene sceneID="uwo-tM-TNx">
<objects>
<viewController id="iSg-09-Dmx" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="zex-wm-vbi">
<rect key="frame" x="0.0" y="0.0" width="430" height="932"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="Zkq-6A-i5s">
<rect key="frame" x="0.0" y="0.0" width="430" height="932"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="OSg-qz-HrE">
<rect key="frame" x="145" y="452.33333333333331" width="140" height="52.333333333333314"/>
<constraints>
<constraint firstAttribute="width" secondItem="OSg-qz-HrE" secondAttribute="height" multiplier="8:3" id="3d3-Q1-Sjn"/>
<constraint firstAttribute="width" constant="140" id="cAG-jB-6Nh"/>
</constraints>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="dVM-qa-WQy"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="OSg-qz-HrE" firstAttribute="centerX" secondItem="Zkq-6A-i5s" secondAttribute="centerX" id="2ym-OU-xaL"/>
<constraint firstAttribute="bottom" secondItem="Zkq-6A-i5s" secondAttribute="bottom" id="U6L-gA-oX4"/>
<constraint firstAttribute="trailing" secondItem="Zkq-6A-i5s" secondAttribute="trailing" id="mHd-hu-lnV"/>
<constraint firstItem="OSg-qz-HrE" firstAttribute="centerY" secondItem="dVM-qa-WQy" secondAttribute="centerY" id="mcE-c0-vQK"/>
<constraint firstItem="Zkq-6A-i5s" firstAttribute="top" secondItem="zex-wm-vbi" secondAttribute="top" id="mj1-JV-lMK"/>
<constraint firstItem="Zkq-6A-i5s" firstAttribute="leading" secondItem="zex-wm-vbi" secondAttribute="leading" id="s9b-GP-RgN"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="Yx0-qJ-sMV"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="sl1-vo-3UY" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1881" y="667"/>
</scene>
</scenes>
<resources>
<image name="16Years" width="99" height="79.333335876464844"/>

View File

@@ -7,6 +7,7 @@
import UIKit
import Lottie
import OneSignalFramework
class SplashVC: UIViewController {
@@ -29,6 +30,8 @@ class SplashVC: UIViewController {
vm.playSplashSound()
animateImageScale()
self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil)
print("OneSignalID:- ", OneSignal.User.pushSubscription.id ?? "NIL")
}
@IBAction func languageBtnTapped(_ sender: UIButton) {

View File

@@ -64,7 +64,7 @@ class SplashVM{
func getUserData(){
if AuthFunc.shareInstance.getUserType() == 3{
//setusertype
AuthFunc.shareInstance.userData = UserDataDM.ResultData(id: nil, birthdate: nil, email: nil, avtar: nil, avtarURL: nil, userType: "3", languageMasterID: nil, lastLogin: nil, rememberToken: nil, childDetail: nil, language: nil, alreadyLoggedIn: nil, isDeactive: nil)
AuthFunc.shareInstance.userData = UserDataDM.ResultData(id: nil, genderData: nil, birthdate: nil, email: nil, avtar: nil, avtarURL: nil, userType: "3", languageMasterID: nil, lastLogin: nil, rememberToken: nil, childDetail: nil, language: nil, alreadyLoggedIn: nil, isDeactive: nil)
UIApplication.setRootView(SideMenuController.instantiate(from: .Home))
return
}

View File

@@ -295,8 +295,8 @@ final class PersistentStorage
PersistentStorage.shared.checkIfExist( key: .post_type,clicksData: userClicks)
}
func addGamesCount(postID : Int){
let userClicks = UserClickData(clickCounts: 1, categoryId: 0, postId: postID, postType: PostType.game.rawValue)
func addGamesCount(postID : Int, count : Int = 1){
let userClicks = UserClickData(clickCounts: count, categoryId: 0, postId: postID, postType: PostType.game.rawValue)
PersistentStorage.shared.checkIfExist( key: .post_type,clicksData: userClicks)
}

View File

@@ -27,6 +27,10 @@ class AboutUsVc: UIViewController {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
self.navigationController?.setColor(color: .white)
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
}

View File

@@ -48,12 +48,16 @@ class ContactSupportVC: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
// MARK: - Button Click Handler
@IBAction func submitBtnTapped(_ sender: LocalisedElementsButton) {
PersistentStorage.shared.addOthersCount()
/*
if user is guest check for name and email
*/

View File

@@ -42,6 +42,10 @@ class FaqVC: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
override func viewDidDisappear(_ animated: Bool) {
@@ -63,6 +67,7 @@ extension FaqVC : TableViewSRC{
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
PersistentStorage.shared.addOthersCount()
var index = [IndexPath]()
if let lastIndex = vm.lastIndex{
if lastIndex == indexPath.row{

View File

@@ -38,9 +38,14 @@ class ProfileVC: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
PersistentStorage.shared.addOthersCount()
if fullNameTF.text!.count < 3 {
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC

View File

@@ -67,5 +67,10 @@ class WebViewVC: UIViewController, WKNavigationDelegate{
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
self.navigationController?.setColor(color: .black)
if self.isMovingFromParent {
// Back button was pressed
PersistentStorage.shared.addOthersCount()
}
}
}

View File

@@ -51,10 +51,12 @@ class ContactSupportVM{
initDropDown()
vc.bottomArrow.addTapGesture {
PersistentStorage.shared.addOthersCount()
self.dropDownModule.show()
}
vc.subjectLabel.addTapGesture {
PersistentStorage.shared.addOthersCount()
self.dropDownModule.show()
}

View File

@@ -29,6 +29,7 @@ class ProfileVM{
setUserData()
hindiEnglishLanguage()
vc.dob.isEnabled = false
/*
Depnding on user type limit the date
*/
@@ -52,6 +53,7 @@ class ProfileVM{
}
@objc func editNameClicked(){
PersistentStorage.shared.addOthersCount()
vc.fullNameTF.becomeFirstResponder()
}
@@ -66,6 +68,15 @@ class ProfileVM{
}
}
if let genderData = data.genderData ,let id = genderData.id {
if gender == id{
enableDisableNextBtn(enable: false)
}else{
enableDisableNextBtn(enable: true)
}
}else{
enableDisableNextBtn(enable: true)
}
}
private func enableDisableNextBtn(enable : Bool){
@@ -80,7 +91,16 @@ class ProfileVM{
func setUserData(){
guard let data = AuthFunc.shareInstance.userData else{return}
gender = 2 // static for now
gender = 0 // default
if let genderData = data.genderData{
if genderData.id == 1{ // girl
gender = genderData.id ?? 1
}else if genderData.id == 2{ //boy
gender = genderData.id ?? 2
}
}else{
gender = 0
}
vc.fullNameTF.text = data.fullname
vc.userNameLabel.text = data.username
@@ -130,9 +150,13 @@ class ProfileVM{
self.vc.toast(msg: data.message ?? "Unrecognised error" , time: 2)
case 1: // Success
Utilities.dismissProgressHUD()
self.vc.toast(msg: data.message ?? "Updated profile", time: 1.5) {
guard let data = data.data?.result else{return}
AuthFunc.shareInstance.userData = data
self.vc.toast(msg: data.message ?? "Updated profile", time: 1.5) { [weak self] in
guard let self, let data = data.data?.result else{return}
AuthFunc.shareInstance.userData?.fullname = vc.fullNameTF.text
AuthFunc.shareInstance.userData?.genderData?.id = gender
AuthFunc.shareInstance.userData?.genderData?.genderName = (gender == 1 ? "Boy" : "Girl")
// AuthFunc.shareInstance.userData = data
self.enableDisableNextBtn(enable: false)
// self.vc.navigationController?.popViewController(animated: true)
}
@@ -151,7 +175,22 @@ class ProfileVM{
func boyBtnTapped() {
// Apply click effect animation
PersistentStorage.shared.addOthersCount()
gender = 2
//check if userdata has same gender
if let data = AuthFunc.shareInstance.userData {
if let genderData = data.genderData, let id = genderData.id{
if id == 2{
enableDisableNextBtn(enable: false)
}else{
enableDisableNextBtn(enable: true)
}
}else{
enableDisableNextBtn(enable: true)
}
}
UIView.animate(withDuration: 0.1, animations: {
self.vc.boyView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}) { _ in
@@ -163,8 +202,22 @@ class ProfileVM{
}
func girlBtnTapped() {
PersistentStorage.shared.addOthersCount()
gender = 1
//check if userdata has same gender
if let data = AuthFunc.shareInstance.userData {
if let genderData = data.genderData, let id = genderData.id{
if id == 1{
enableDisableNextBtn(enable: false)
}else{
enableDisableNextBtn(enable: true)
}
}else{
enableDisableNextBtn(enable: true)
}
}
// Apply click effect animation
UIView.animate(withDuration: 0.1, animations: {
self.vc.girlView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)

View File

@@ -77,9 +77,11 @@ class TabBarVC: UITabBarController {
switch mode{
case .yes:
//If user clicked nav him to login screen. Call the api.
PersistentStorage.shared.addOthersCount()
deactivateAccount()
print("Yes")
case .no:
PersistentStorage.shared.addOthersCount()
print("no")
}
}

View File

@@ -775,7 +775,7 @@
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ksi-1c-xBG">
<rect key="frame" x="0.0" y="134" width="393" height="220"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="220" id="ezY-uu-Vnb"/>
</constraints>
@@ -1319,10 +1319,7 @@
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemBrownColor">
<color red="0.63529411764705879" green="0.51764705882352946" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
<systemColor name="systemGreenColor">
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.63529411759999999" green="0.51764705879999995" blue="0.36862745099999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>

View File

@@ -55,10 +55,9 @@ class ThemeOneVC: UIViewController {
playerItem.removeObserver(self, forKeyPath: "isPlaybackLikelyToKeepUp")
}
if let playerLayer = vm.playerLayer, let avPlayer = vm.avPlayer {
playerLayer.removeObserver(self, forKeyPath: "timeControlStatus")
avPlayer.removeObserver(self, forKeyPath: "timeControlStatus")
avPlayer.pause()
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {

View File

@@ -49,6 +49,7 @@ class ThemeTwoVC: UIViewController {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
vm.setData()
vm.playerLayer.frame = liveTvView.bounds
}
@IBAction func sideBarBtnTapped(_ sender: UIButton) {

View File

@@ -443,14 +443,10 @@ class ThemeOneVM{
vc.modalPresentationStyle = .fullScreen
vc.modalTransitionStyle = .crossDissolve
DispatchQueue.main.async { [weak self] in
guard let self else{return}
// Present the PlayerVC
self.vc.present(vc, animated: false) { [weak self] in
guard let self else{return}
stopLiveStream()
}
self.vc.present(vc, animated: false) { [weak self] in
guard let self else{return}
stopLiveStream()
}
} catch {
print("Error creating JWPlayer configuration: \(error)")

View File

@@ -174,14 +174,10 @@ class ThemeTwoVM{
vc.modalPresentationStyle = .fullScreen
vc.modalTransitionStyle = .crossDissolve
DispatchQueue.main.async { [weak self] in
// Present the PlayerVC
self.vc.present(vc, animated: false) { [weak self] in
guard let self else{return}
// Present the PlayerVC
self.vc.present(vc, animated: false) { [weak self] in
guard let self else{return}
stopLiveStream()
}
stopLiveStream()
}
} catch {
print("Error creating JWPlayer configuration: \(error)")
@@ -269,7 +265,7 @@ class ThemeTwoVM{
playerLayer.frame = self.vc.liveTvView.bounds
self.vc.liveTvView.layer.addSublayer(playerLayer)
self.vc.liveTvView.layoutIfNeeded()
avPlayer.play()
avPlayer.volume = 0
}

View File

@@ -2,10 +2,16 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.user-fonts</key>
<array>
<string>app-usage</string>
<string>system-installation</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.app.woka.onesignal</string>
</array>
</dict>
</plist>