tum 2 yıl önce
ebeveyn
işleme
25642a16ec
38 değiştirilmiş dosya ile 3333 ekleme ve 1178 silme
  1. 2 0
      .gitignore
  2. BIN
      assets/logo.png
  3. BIN
      assets/splash.png
  4. 0 13
      ios/.gitignore
  5. 0 436
      ios/App/App.xcodeproj/project.pbxproj
  6. 0 7
      ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  7. 0 10
      ios/App/App.xcworkspace/contents.xcworkspacedata
  8. 0 8
      ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  9. 0 8
      ios/App/App/App.entitlements
  10. 0 80
      ios/App/App/AppDelegate.swift
  11. BIN
      ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
  12. 0 14
      ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json
  13. 0 6
      ios/App/App/Assets.xcassets/Contents.json
  14. 0 23
      ios/App/App/Assets.xcassets/Splash.imageset/Contents.json
  15. BIN
      ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png
  16. BIN
      ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png
  17. BIN
      ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png
  18. 0 32
      ios/App/App/Base.lproj/LaunchScreen.storyboard
  19. 0 19
      ios/App/App/Base.lproj/Main.storyboard
  20. 0 38
      ios/App/App/GoogleService-Info.plist
  21. 0 91
      ios/App/App/Info.plist
  22. 0 13
      ios/App/App/google-services.json
  23. 0 34
      ios/App/Podfile
  24. 0 197
      ios/App/Podfile.lock
  25. 3089 115
      package-lock.json
  26. 3 0
      package.json
  27. BIN
      public/images/circlelogo-trans.png
  28. BIN
      public/images/logo.png
  29. 46 0
      public/manifest.webmanifest
  30. 13 2
      src/App.vue
  31. 1 1
      src/components/SearchItem.vue
  32. 36 5
      src/composable/settings.ts
  33. 1 0
      src/views/CourseMatDetailPage.vue
  34. 98 15
      src/views/ProfilePage.vue
  35. 19 6
      src/views/Tab1Page.vue
  36. 10 2
      src/views/Tab2Page.vue
  37. 8 2
      src/views/Tab3Page.vue
  38. 7 1
      src/views/TabsPage.vue

+ 2 - 0
.gitignore

30
 /platforms
30
 /platforms
31
 /plugins
31
 /plugins
32
 /www
32
 /www
33
+/ios
34
+/android

BIN
assets/logo.png


BIN
assets/splash.png


+ 0 - 13
ios/.gitignore

1
-App/build
2
-App/Pods
3
-App/output
4
-App/App/public
5
-DerivedData
6
-xcuserdata
7
-
8
-# Cordova plugins for Capacitor
9
-capacitor-cordova-ios-plugins
10
-
11
-# Generated Config files
12
-App/App/capacitor.config.json
13
-App/App/config.xml

+ 0 - 436
ios/App/App.xcodeproj/project.pbxproj

1
-// !$*UTF8*$!
2
-{
3
-	archiveVersion = 1;
4
-	classes = {
5
-	};
6
-	objectVersion = 54;
7
-	objects = {
8
-
9
-/* Begin PBXBuildFile section */
10
-		1EF387912AF6160200F60A08 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1EF387902AF6160200F60A08 /* GoogleService-Info.plist */; };
11
-		1EF387942AF7EEBF00F60A08 /* google-services.json in Resources */ = {isa = PBXBuildFile; fileRef = 1EF387932AF7EEBE00F60A08 /* google-services.json */; };
12
-		2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; };
13
-		50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; };
14
-		504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; };
15
-		504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; };
16
-		504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; };
17
-		504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; };
18
-		50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; };
19
-		A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; };
20
-/* End PBXBuildFile section */
21
-
22
-/* Begin PBXFileReference section */
23
-		1EF387902AF6160200F60A08 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
24
-		1EF387922AF6201900F60A08 /* App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = App.entitlements; sourceTree = "<group>"; };
25
-		1EF387932AF7EEBE00F60A08 /* google-services.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "google-services.json"; sourceTree = "<group>"; };
26
-		2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = "<group>"; };
27
-		50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = "<group>"; };
28
-		504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; };
29
-		504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
30
-		504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
31
-		504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
32
-		504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
33
-		504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
34
-		50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; };
35
-		AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
36
-		AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = "<group>"; };
37
-		FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = "<group>"; };
38
-/* End PBXFileReference section */
39
-
40
-/* Begin PBXFrameworksBuildPhase section */
41
-		504EC3011FED79650016851F /* Frameworks */ = {
42
-			isa = PBXFrameworksBuildPhase;
43
-			buildActionMask = 2147483647;
44
-			files = (
45
-				A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */,
46
-			);
47
-			runOnlyForDeploymentPostprocessing = 0;
48
-		};
49
-/* End PBXFrameworksBuildPhase section */
50
-
51
-/* Begin PBXGroup section */
52
-		27E2DDA53C4D2A4D1A88CE4A /* Frameworks */ = {
53
-			isa = PBXGroup;
54
-			children = (
55
-				AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */,
56
-			);
57
-			name = Frameworks;
58
-			sourceTree = "<group>";
59
-		};
60
-		504EC2FB1FED79650016851F = {
61
-			isa = PBXGroup;
62
-			children = (
63
-				504EC3061FED79650016851F /* App */,
64
-				504EC3051FED79650016851F /* Products */,
65
-				7F8756D8B27F46E3366F6CEA /* Pods */,
66
-				27E2DDA53C4D2A4D1A88CE4A /* Frameworks */,
67
-			);
68
-			sourceTree = "<group>";
69
-		};
70
-		504EC3051FED79650016851F /* Products */ = {
71
-			isa = PBXGroup;
72
-			children = (
73
-				504EC3041FED79650016851F /* App.app */,
74
-			);
75
-			name = Products;
76
-			sourceTree = "<group>";
77
-		};
78
-		504EC3061FED79650016851F /* App */ = {
79
-			isa = PBXGroup;
80
-			children = (
81
-				1EF387932AF7EEBE00F60A08 /* google-services.json */,
82
-				1EF387922AF6201900F60A08 /* App.entitlements */,
83
-				1EF387902AF6160200F60A08 /* GoogleService-Info.plist */,
84
-				50379B222058CBB4000EE86E /* capacitor.config.json */,
85
-				504EC3071FED79650016851F /* AppDelegate.swift */,
86
-				504EC30B1FED79650016851F /* Main.storyboard */,
87
-				504EC30E1FED79650016851F /* Assets.xcassets */,
88
-				504EC3101FED79650016851F /* LaunchScreen.storyboard */,
89
-				504EC3131FED79650016851F /* Info.plist */,
90
-				2FAD9762203C412B000D30F8 /* config.xml */,
91
-				50B271D01FEDC1A000F3C39B /* public */,
92
-			);
93
-			path = App;
94
-			sourceTree = "<group>";
95
-		};
96
-		7F8756D8B27F46E3366F6CEA /* Pods */ = {
97
-			isa = PBXGroup;
98
-			children = (
99
-				FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */,
100
-				AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */,
101
-			);
102
-			name = Pods;
103
-			sourceTree = "<group>";
104
-		};
105
-/* End PBXGroup section */
106
-
107
-/* Begin PBXNativeTarget section */
108
-		504EC3031FED79650016851F /* App */ = {
109
-			isa = PBXNativeTarget;
110
-			buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */;
111
-			buildPhases = (
112
-				6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */,
113
-				504EC3001FED79650016851F /* Sources */,
114
-				504EC3011FED79650016851F /* Frameworks */,
115
-				504EC3021FED79650016851F /* Resources */,
116
-				9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */,
117
-			);
118
-			buildRules = (
119
-			);
120
-			dependencies = (
121
-			);
122
-			name = App;
123
-			productName = App;
124
-			productReference = 504EC3041FED79650016851F /* App.app */;
125
-			productType = "com.apple.product-type.application";
126
-		};
127
-/* End PBXNativeTarget section */
128
-
129
-/* Begin PBXProject section */
130
-		504EC2FC1FED79650016851F /* Project object */ = {
131
-			isa = PBXProject;
132
-			attributes = {
133
-				BuildIndependentTargetsInParallel = YES;
134
-				LastSwiftUpdateCheck = 0920;
135
-				LastUpgradeCheck = 1500;
136
-				TargetAttributes = {
137
-					504EC3031FED79650016851F = {
138
-						CreatedOnToolsVersion = 9.2;
139
-						LastSwiftMigration = 1100;
140
-						ProvisioningStyle = Automatic;
141
-					};
142
-				};
143
-			};
144
-			buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */;
145
-			compatibilityVersion = "Xcode 8.0";
146
-			developmentRegion = en;
147
-			hasScannedForEncodings = 0;
148
-			knownRegions = (
149
-				en,
150
-				Base,
151
-			);
152
-			mainGroup = 504EC2FB1FED79650016851F;
153
-			productRefGroup = 504EC3051FED79650016851F /* Products */;
154
-			projectDirPath = "";
155
-			projectRoot = "";
156
-			targets = (
157
-				504EC3031FED79650016851F /* App */,
158
-			);
159
-		};
160
-/* End PBXProject section */
161
-
162
-/* Begin PBXResourcesBuildPhase section */
163
-		504EC3021FED79650016851F /* Resources */ = {
164
-			isa = PBXResourcesBuildPhase;
165
-			buildActionMask = 2147483647;
166
-			files = (
167
-				504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */,
168
-				50B271D11FEDC1A000F3C39B /* public in Resources */,
169
-				1EF387942AF7EEBF00F60A08 /* google-services.json in Resources */,
170
-				504EC30F1FED79650016851F /* Assets.xcassets in Resources */,
171
-				50379B232058CBB4000EE86E /* capacitor.config.json in Resources */,
172
-				504EC30D1FED79650016851F /* Main.storyboard in Resources */,
173
-				2FAD9763203C412B000D30F8 /* config.xml in Resources */,
174
-				1EF387912AF6160200F60A08 /* GoogleService-Info.plist in Resources */,
175
-			);
176
-			runOnlyForDeploymentPostprocessing = 0;
177
-		};
178
-/* End PBXResourcesBuildPhase section */
179
-
180
-/* Begin PBXShellScriptBuildPhase section */
181
-		6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */ = {
182
-			isa = PBXShellScriptBuildPhase;
183
-			buildActionMask = 2147483647;
184
-			files = (
185
-			);
186
-			inputPaths = (
187
-				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
188
-				"${PODS_ROOT}/Manifest.lock",
189
-			);
190
-			name = "[CP] Check Pods Manifest.lock";
191
-			outputPaths = (
192
-				"$(DERIVED_FILE_DIR)/Pods-App-checkManifestLockResult.txt",
193
-			);
194
-			runOnlyForDeploymentPostprocessing = 0;
195
-			shellPath = /bin/sh;
196
-			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
197
-			showEnvVarsInLog = 0;
198
-		};
199
-		9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */ = {
200
-			isa = PBXShellScriptBuildPhase;
201
-			buildActionMask = 2147483647;
202
-			files = (
203
-			);
204
-			inputPaths = (
205
-			);
206
-			name = "[CP] Embed Pods Frameworks";
207
-			outputPaths = (
208
-			);
209
-			runOnlyForDeploymentPostprocessing = 0;
210
-			shellPath = /bin/sh;
211
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks.sh\"\n";
212
-			showEnvVarsInLog = 0;
213
-		};
214
-/* End PBXShellScriptBuildPhase section */
215
-
216
-/* Begin PBXSourcesBuildPhase section */
217
-		504EC3001FED79650016851F /* Sources */ = {
218
-			isa = PBXSourcesBuildPhase;
219
-			buildActionMask = 2147483647;
220
-			files = (
221
-				504EC3081FED79650016851F /* AppDelegate.swift in Sources */,
222
-			);
223
-			runOnlyForDeploymentPostprocessing = 0;
224
-		};
225
-/* End PBXSourcesBuildPhase section */
226
-
227
-/* Begin PBXVariantGroup section */
228
-		504EC30B1FED79650016851F /* Main.storyboard */ = {
229
-			isa = PBXVariantGroup;
230
-			children = (
231
-				504EC30C1FED79650016851F /* Base */,
232
-			);
233
-			name = Main.storyboard;
234
-			sourceTree = "<group>";
235
-		};
236
-		504EC3101FED79650016851F /* LaunchScreen.storyboard */ = {
237
-			isa = PBXVariantGroup;
238
-			children = (
239
-				504EC3111FED79650016851F /* Base */,
240
-			);
241
-			name = LaunchScreen.storyboard;
242
-			sourceTree = "<group>";
243
-		};
244
-/* End PBXVariantGroup section */
245
-
246
-/* Begin XCBuildConfiguration section */
247
-		504EC3141FED79650016851F /* Debug */ = {
248
-			isa = XCBuildConfiguration;
249
-			buildSettings = {
250
-				ALWAYS_SEARCH_USER_PATHS = NO;
251
-				CLANG_ANALYZER_NONNULL = YES;
252
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
253
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
254
-				CLANG_CXX_LIBRARY = "libc++";
255
-				CLANG_ENABLE_MODULES = YES;
256
-				CLANG_ENABLE_OBJC_ARC = YES;
257
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
258
-				CLANG_WARN_BOOL_CONVERSION = YES;
259
-				CLANG_WARN_COMMA = YES;
260
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
261
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
262
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
263
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
264
-				CLANG_WARN_EMPTY_BODY = YES;
265
-				CLANG_WARN_ENUM_CONVERSION = YES;
266
-				CLANG_WARN_INFINITE_RECURSION = YES;
267
-				CLANG_WARN_INT_CONVERSION = YES;
268
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
269
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
270
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
271
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
272
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
273
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
274
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
275
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
276
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
277
-				CLANG_WARN_UNREACHABLE_CODE = YES;
278
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
279
-				CODE_SIGN_IDENTITY = "iPhone Developer";
280
-				COPY_PHASE_STRIP = NO;
281
-				DEBUG_INFORMATION_FORMAT = dwarf;
282
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
283
-				ENABLE_TESTABILITY = YES;
284
-				ENABLE_USER_SCRIPT_SANDBOXING = NO;
285
-				GCC_C_LANGUAGE_STANDARD = gnu11;
286
-				GCC_DYNAMIC_NO_PIC = NO;
287
-				GCC_NO_COMMON_BLOCKS = YES;
288
-				GCC_OPTIMIZATION_LEVEL = 0;
289
-				GCC_PREPROCESSOR_DEFINITIONS = (
290
-					"DEBUG=1",
291
-					"$(inherited)",
292
-				);
293
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
294
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
295
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
296
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
297
-				GCC_WARN_UNUSED_FUNCTION = YES;
298
-				GCC_WARN_UNUSED_VARIABLE = YES;
299
-				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
300
-				MTL_ENABLE_DEBUG_INFO = YES;
301
-				ONLY_ACTIVE_ARCH = YES;
302
-				SDKROOT = iphoneos;
303
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
304
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
305
-			};
306
-			name = Debug;
307
-		};
308
-		504EC3151FED79650016851F /* Release */ = {
309
-			isa = XCBuildConfiguration;
310
-			buildSettings = {
311
-				ALWAYS_SEARCH_USER_PATHS = NO;
312
-				CLANG_ANALYZER_NONNULL = YES;
313
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
314
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
315
-				CLANG_CXX_LIBRARY = "libc++";
316
-				CLANG_ENABLE_MODULES = YES;
317
-				CLANG_ENABLE_OBJC_ARC = YES;
318
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
319
-				CLANG_WARN_BOOL_CONVERSION = YES;
320
-				CLANG_WARN_COMMA = YES;
321
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
322
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
323
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
324
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
325
-				CLANG_WARN_EMPTY_BODY = YES;
326
-				CLANG_WARN_ENUM_CONVERSION = YES;
327
-				CLANG_WARN_INFINITE_RECURSION = YES;
328
-				CLANG_WARN_INT_CONVERSION = YES;
329
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
330
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
331
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
332
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
333
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
334
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
335
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
336
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
337
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
338
-				CLANG_WARN_UNREACHABLE_CODE = YES;
339
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
340
-				CODE_SIGN_IDENTITY = "iPhone Developer";
341
-				COPY_PHASE_STRIP = NO;
342
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
343
-				ENABLE_NS_ASSERTIONS = NO;
344
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
345
-				ENABLE_USER_SCRIPT_SANDBOXING = NO;
346
-				GCC_C_LANGUAGE_STANDARD = gnu11;
347
-				GCC_NO_COMMON_BLOCKS = YES;
348
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
349
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
350
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
351
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
352
-				GCC_WARN_UNUSED_FUNCTION = YES;
353
-				GCC_WARN_UNUSED_VARIABLE = YES;
354
-				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
355
-				MTL_ENABLE_DEBUG_INFO = NO;
356
-				SDKROOT = iphoneos;
357
-				SWIFT_COMPILATION_MODE = wholemodule;
358
-				SWIFT_OPTIMIZATION_LEVEL = "-O";
359
-				VALIDATE_PRODUCT = YES;
360
-			};
361
-			name = Release;
362
-		};
363
-		504EC3171FED79650016851F /* Debug */ = {
364
-			isa = XCBuildConfiguration;
365
-			baseConfigurationReference = FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */;
366
-			buildSettings = {
367
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
368
-				CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
369
-				CODE_SIGN_STYLE = Automatic;
370
-				CURRENT_PROJECT_VERSION = 1;
371
-				DEVELOPMENT_TEAM = 5QTJEGL2H2;
372
-				INFOPLIST_FILE = App/Info.plist;
373
-				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
374
-				LD_RUNPATH_SEARCH_PATHS = (
375
-					"$(inherited)",
376
-					"@executable_path/Frameworks",
377
-				);
378
-				MARKETING_VERSION = 1.0;
379
-				OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
380
-				PRODUCT_BUNDLE_IDENTIFIER = net.simplico.tmtlive;
381
-				PRODUCT_NAME = "$(TARGET_NAME)";
382
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
383
-				SWIFT_VERSION = 5.0;
384
-				TARGETED_DEVICE_FAMILY = "1,2";
385
-			};
386
-			name = Debug;
387
-		};
388
-		504EC3181FED79650016851F /* Release */ = {
389
-			isa = XCBuildConfiguration;
390
-			baseConfigurationReference = AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */;
391
-			buildSettings = {
392
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
393
-				CODE_SIGN_ENTITLEMENTS = App/App.entitlements;
394
-				CODE_SIGN_STYLE = Automatic;
395
-				CURRENT_PROJECT_VERSION = 1;
396
-				DEVELOPMENT_TEAM = 5QTJEGL2H2;
397
-				INFOPLIST_FILE = App/Info.plist;
398
-				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
399
-				LD_RUNPATH_SEARCH_PATHS = (
400
-					"$(inherited)",
401
-					"@executable_path/Frameworks",
402
-				);
403
-				MARKETING_VERSION = 1.0;
404
-				PRODUCT_BUNDLE_IDENTIFIER = net.simplico.tmtlive;
405
-				PRODUCT_NAME = "$(TARGET_NAME)";
406
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
407
-				SWIFT_VERSION = 5.0;
408
-				TARGETED_DEVICE_FAMILY = "1,2";
409
-			};
410
-			name = Release;
411
-		};
412
-/* End XCBuildConfiguration section */
413
-
414
-/* Begin XCConfigurationList section */
415
-		504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = {
416
-			isa = XCConfigurationList;
417
-			buildConfigurations = (
418
-				504EC3141FED79650016851F /* Debug */,
419
-				504EC3151FED79650016851F /* Release */,
420
-			);
421
-			defaultConfigurationIsVisible = 0;
422
-			defaultConfigurationName = Release;
423
-		};
424
-		504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = {
425
-			isa = XCConfigurationList;
426
-			buildConfigurations = (
427
-				504EC3171FED79650016851F /* Debug */,
428
-				504EC3181FED79650016851F /* Release */,
429
-			);
430
-			defaultConfigurationIsVisible = 0;
431
-			defaultConfigurationName = Release;
432
-		};
433
-/* End XCConfigurationList section */
434
-	};
435
-	rootObject = 504EC2FC1FED79650016851F /* Project object */;
436
-}

+ 0 - 7
ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<Workspace
3
-   version = "1.0">
4
-   <FileRef
5
-      location = "self:App.xcodeproj">
6
-   </FileRef>
7
-</Workspace>

+ 0 - 10
ios/App/App.xcworkspace/contents.xcworkspacedata

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<Workspace
3
-   version = "1.0">
4
-   <FileRef
5
-      location = "group:App.xcodeproj">
6
-   </FileRef>
7
-   <FileRef
8
-      location = "group:Pods/Pods.xcodeproj">
9
-   </FileRef>
10
-</Workspace>

+ 0 - 8
ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
-<plist version="1.0">
4
-<dict>
5
-	<key>IDEDidComputeMac32BitWarning</key>
6
-	<true/>
7
-</dict>
8
-</plist>

+ 0 - 8
ios/App/App/App.entitlements

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
-<plist version="1.0">
4
-<dict>
5
-	<key>aps-environment</key>
6
-	<string>development</string>
7
-</dict>
8
-</plist>

+ 0 - 80
ios/App/App/AppDelegate.swift

1
-import UIKit
2
-import Capacitor
3
-import FBSDKCoreKit
4
-import Firebase
5
-
6
-@UIApplicationMain
7
-class AppDelegate: UIResponder, UIApplicationDelegate {
8
-
9
-    var window: UIWindow?
10
-
11
-    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
12
-        // Override point for customization after application launch.
13
-        FBSDKCoreKit.ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
14
-        FirebaseApp.configure()
15
-        return true
16
-    }
17
-
18
-    func applicationWillResignActive(_ application: UIApplication) {
19
-        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
20
-        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
21
-    }
22
-
23
-    func applicationDidEnterBackground(_ application: UIApplication) {
24
-        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
25
-        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
26
-    }
27
-
28
-    func applicationWillEnterForeground(_ application: UIApplication) {
29
-        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
30
-    }
31
-
32
-    func applicationDidBecomeActive(_ application: UIApplication) {
33
-        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
34
-    }
35
-
36
-    func applicationWillTerminate(_ application: UIApplication) {
37
-        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
38
-    }
39
-
40
-    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
41
-        // Called when the app was launched with a url. Feel free to add additional processing here,
42
-        // but if you want the App API to support tracking app url opens, make sure to keep this call
43
-        //return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
44
-        
45
-        if (FBSDKCoreKit.ApplicationDelegate.shared.application(
46
-                    app,
47
-                    open: url,
48
-                    sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
49
-                    annotation: options[UIApplication.OpenURLOptionsKey.annotation]
50
-                )) {
51
-                    return true;
52
-                } else {
53
-                    return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
54
-                }
55
-    }
56
-
57
-    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
58
-        // Called when the app was launched with an activity, including Universal Links.
59
-        // Feel free to add additional processing here, but if you want the App API to support
60
-        // tracking app url opens, make sure to keep this call
61
-        return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler)
62
-    }
63
-    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
64
-      NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: deviceToken)
65
-        Messaging.messaging().apnsToken = deviceToken
66
-        Messaging.messaging().token(completion: { (token, error) in
67
-             if let error = error {
68
-                 NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)
69
-             } else if let token = token {
70
-                 NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: token)
71
-             }
72
-        })
73
-    }
74
-
75
-    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
76
-      NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)
77
-    
78
-    }
79
-
80
-}

BIN
ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png


+ 0 - 14
ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json

1
-{
2
-  "images" : [
3
-    {
4
-      "filename" : "AppIcon-512@2x.png",
5
-      "idiom" : "universal",
6
-      "platform" : "ios",
7
-      "size" : "1024x1024"
8
-    }
9
-  ],
10
-  "info" : {
11
-    "author" : "xcode",
12
-    "version" : 1
13
-  }
14
-}

+ 0 - 6
ios/App/App/Assets.xcassets/Contents.json

1
-{
2
-  "info" : {
3
-    "version" : 1,
4
-    "author" : "xcode"
5
-  }
6
-}

+ 0 - 23
ios/App/App/Assets.xcassets/Splash.imageset/Contents.json

1
-{
2
-  "images" : [
3
-    {
4
-      "idiom" : "universal",
5
-      "filename" : "splash-2732x2732-2.png",
6
-      "scale" : "1x"
7
-    },
8
-    {
9
-      "idiom" : "universal",
10
-      "filename" : "splash-2732x2732-1.png",
11
-      "scale" : "2x"
12
-    },
13
-    {
14
-      "idiom" : "universal",
15
-      "filename" : "splash-2732x2732.png",
16
-      "scale" : "3x"
17
-    }
18
-  ],
19
-  "info" : {
20
-    "version" : 1,
21
-    "author" : "xcode"
22
-  }
23
-}

BIN
ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png


BIN
ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png


BIN
ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png


+ 0 - 32
ios/App/App/Base.lproj/LaunchScreen.storyboard

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17132" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
3
-    <device id="retina4_7" orientation="portrait" appearance="light"/>
4
-    <dependencies>
5
-        <deployment identifier="iOS"/>
6
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17105"/>
7
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
8
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9
-    </dependencies>
10
-    <scenes>
11
-        <!--View Controller-->
12
-        <scene sceneID="EHf-IW-A2E">
13
-            <objects>
14
-                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
15
-                    <imageView key="view" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash" id="snD-IY-ifK">
16
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
17
-                        <autoresizingMask key="autoresizingMask"/>
18
-                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
19
-                    </imageView>
20
-                </viewController>
21
-                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
22
-            </objects>
23
-            <point key="canvasLocation" x="53" y="375"/>
24
-        </scene>
25
-    </scenes>
26
-    <resources>
27
-        <image name="Splash" width="1366" height="1366"/>
28
-        <systemColor name="systemBackgroundColor">
29
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
30
-        </systemColor>
31
-    </resources>
32
-</document>

+ 0 - 19
ios/App/App/Base.lproj/Main.storyboard

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14111" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3
-    <device id="retina4_7" orientation="portrait">
4
-        <adaptation id="fullscreen"/>
5
-    </device>
6
-    <dependencies>
7
-        <deployment identifier="iOS"/>
8
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
9
-    </dependencies>
10
-    <scenes>
11
-        <!--Bridge View Controller-->
12
-        <scene sceneID="tne-QT-ifu">
13
-            <objects>
14
-                <viewController id="BYZ-38-t0r" customClass="CAPBridgeViewController" customModule="Capacitor" sceneMemberID="viewController"/>
15
-                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
16
-            </objects>
17
-        </scene>
18
-    </scenes>
19
-</document>

+ 0 - 38
ios/App/App/GoogleService-Info.plist

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
-<plist version="1.0">
4
-<dict>
5
-	<key>CLIENT_ID</key>
6
-	<string>496323526366-khm7rkn7rthnauaailuth9sdid4of8d8.apps.googleusercontent.com</string>
7
-	<key>REVERSED_CLIENT_ID</key>
8
-	<string>com.googleusercontent.apps.496323526366-khm7rkn7rthnauaailuth9sdid4of8d8</string>
9
-	<key>PLIST_VERSION</key>
10
-	<string>1</string>
11
-	<key>BUNDLE_ID</key>
12
-	<string>net.simplico.tmtlive</string>
13
-    <key>API_KEY</key>
14
-    <string>AIzaSyCEy_bLCJITwxRi-5vsiyArQM5oow5NAgk</string>
15
-    <key>GCM_SENDER_ID</key>
16
-    <string>214019008700</string>
17
-    <key>PLIST_VERSION</key>
18
-    <string>1</string>
19
-    <key>BUNDLE_ID</key>
20
-    <string>net.simplico.tmtlive</string>
21
-    <key>PROJECT_ID</key>
22
-    <string>tmtlive-557ac</string>
23
-    <key>STORAGE_BUCKET</key>
24
-    <string>tmtlive-557ac.appspot.com</string>
25
-    <key>IS_ADS_ENABLED</key>
26
-    <false></false>
27
-    <key>IS_ANALYTICS_ENABLED</key>
28
-    <false></false>
29
-    <key>IS_APPINVITE_ENABLED</key>
30
-    <true></true>
31
-    <key>IS_GCM_ENABLED</key>
32
-    <true></true>
33
-    <key>IS_SIGNIN_ENABLED</key>
34
-    <true></true>
35
-    <key>GOOGLE_APP_ID</key>
36
-    <string>1:214019008700:ios:be7fb5f07aeed695c088b9</string>
37
-</dict>
38
-</plist>

+ 0 - 91
ios/App/App/Info.plist

1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
-<plist version="1.0">
4
-<dict>
5
-	<key>CFBundleDevelopmentRegion</key>
6
-	<string>en</string>
7
-	<key>CFBundleDisplayName</key>
8
-	<string>TMTApp</string>
9
-	<key>CFBundleExecutable</key>
10
-	<string>$(EXECUTABLE_NAME)</string>
11
-	<key>CFBundleIdentifier</key>
12
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
13
-	<key>CFBundleInfoDictionaryVersion</key>
14
-	<string>6.0</string>
15
-	<key>CFBundleName</key>
16
-	<string>$(PRODUCT_NAME)</string>
17
-	<key>CFBundlePackageType</key>
18
-	<string>APPL</string>
19
-	<key>CFBundleShortVersionString</key>
20
-	<string>$(MARKETING_VERSION)</string>
21
-	<key>CFBundleVersion</key>
22
-	<string>$(CURRENT_PROJECT_VERSION)</string>
23
-	<key>LSRequiresIPhoneOS</key>
24
-	<true/>
25
-	<key>UILaunchStoryboardName</key>
26
-	<string>LaunchScreen</string>
27
-	<key>UIMainStoryboardFile</key>
28
-	<string>Main</string>
29
-	<key>UIRequiredDeviceCapabilities</key>
30
-	<array>
31
-		<string>armv7</string>
32
-	</array>
33
-	<key>UISupportedInterfaceOrientations</key>
34
-	<array>
35
-		<string>UIInterfaceOrientationPortrait</string>
36
-		<string>UIInterfaceOrientationLandscapeLeft</string>
37
-		<string>UIInterfaceOrientationLandscapeRight</string>
38
-	</array>
39
-	<key>UISupportedInterfaceOrientations~ipad</key>
40
-	<array>
41
-		<string>UIInterfaceOrientationPortrait</string>
42
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
43
-		<string>UIInterfaceOrientationLandscapeLeft</string>
44
-		<string>UIInterfaceOrientationLandscapeRight</string>
45
-	</array>
46
-	<key>UIViewControllerBasedStatusBarAppearance</key>
47
-	<true/>
48
-  <key>CFBundleURLTypes</key>
49
-  <array>
50
-    <dict>
51
-      <key>CFBundleURLSchemes</key>
52
-      <array>
53
-        <string>fb200395709360570</string>
54
-      </array>
55
-    </dict>
56
-    <dict>
57
-			<key>CFBundleURLName</key>
58
-			<string>net.simplico.tmtlive</string>
59
-			<key>CFBundleURLSchemes</key>
60
-			<array>
61
-				<string>tmtlive</string>
62
-				<string>com.googleusercontent.apps.496323526366-khm7rkn7rthnauaailuth9sdid4of8d8</string>
63
-			</array>
64
-		</dict>
65
-  </array>
66
-  <key>FacebookAppID</key>
67
-  <string>200395709360570</string>
68
-  <key>FacebookClientToken</key>
69
-  <string>a3ae16e80d605bab9483feaa4c523e84</string>
70
-  <key>FacebookDisplayName</key>
71
-  <string>tigermuaythai.live</string>
72
-  <key>LSApplicationQueriesSchemes</key>
73
-  <array>
74
-    <string>fbapi</string>
75
-    <string>fbapi20130214</string>
76
-    <string>fbapi20130410</string>
77
-    <string>fbapi20130702</string>
78
-    <string>fbapi20131010</string>
79
-    <string>fbapi20131219</string>
80
-    <string>fbapi20140410</string>
81
-    <string>fbapi20140116</string>
82
-    <string>fbapi20150313</string>
83
-    <string>fbapi20150629</string>
84
-    <string>fbapi20160328</string>
85
-    <string>fbauth</string>
86
-    <string>fb-messenger-share-api</string>
87
-    <string>fbauth2</string>
88
-    <string>fbshareextension</string>
89
-  </array>
90
-</dict>
91
-</plist>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 13
ios/App/App/google-services.json


+ 0 - 34
ios/App/Podfile

1
-require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers'
2
-
3
-platform :ios, '13.0'
4
-use_frameworks!
5
-
6
-# workaround to avoid Xcode caching of Pods that requires
7
-# Product -> Clean Build Folder after new Cordova plugins installed
8
-# Requires CocoaPods 1.6 or newer
9
-install! 'cocoapods', :disable_input_output_paths => true
10
-
11
-def capacitor_pods
12
-  pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
13
-  pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
14
-  pod 'CapacitorCommunityFacebookLogin', :path => '../../node_modules/@capacitor-community/facebook-login'
15
-  pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app'
16
-  pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics'
17
-  pod 'CapacitorKeyboard', :path => '../../node_modules/@capacitor/keyboard'
18
-  pod 'CapacitorPreferences', :path => '../../node_modules/@capacitor/preferences'
19
-  pod 'CapacitorPushNotifications', :path => '../../node_modules/@capacitor/push-notifications'
20
-  pod 'CapacitorShare', :path => '../../node_modules/@capacitor/share'
21
-  pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar'
22
-  pod 'CapgoInappbrowser', :path => '../../node_modules/@capgo/inappbrowser'
23
-  pod 'CodetrixStudioCapacitorGoogleAuth', :path => '../../node_modules/@codetrix-studio/capacitor-google-auth'
24
-end
25
-
26
-target 'App' do
27
-  capacitor_pods
28
-  # Add your Pods here
29
-  pod 'Firebase/Messaging' # Add this line
30
-end
31
-
32
-post_install do |installer|
33
-  assertDeploymentTarget(installer)
34
-end

+ 0 - 197
ios/App/Podfile.lock

1
-PODS:
2
-  - AppAuth (1.6.2):
3
-    - AppAuth/Core (= 1.6.2)
4
-    - AppAuth/ExternalUserAgent (= 1.6.2)
5
-  - AppAuth/Core (1.6.2)
6
-  - AppAuth/ExternalUserAgent (1.6.2):
7
-    - AppAuth/Core
8
-  - Capacitor (5.5.0):
9
-    - CapacitorCordova
10
-  - CapacitorApp (5.0.6):
11
-    - Capacitor
12
-  - CapacitorCommunityFacebookLogin (5.0.3):
13
-    - Capacitor
14
-    - FBSDKCoreKit (= 16.1.3)
15
-    - FBSDKLoginKit (= 16.1.3)
16
-  - CapacitorCordova (5.5.0)
17
-  - CapacitorHaptics (5.0.6):
18
-    - Capacitor
19
-  - CapacitorKeyboard (5.0.6):
20
-    - Capacitor
21
-  - CapacitorPreferences (5.0.6):
22
-    - Capacitor
23
-  - CapacitorPushNotifications (5.1.0):
24
-    - Capacitor
25
-  - CapacitorShare (5.0.6):
26
-    - Capacitor
27
-  - CapacitorStatusBar (5.0.6):
28
-    - Capacitor
29
-  - CapgoInappbrowser (1.2.19):
30
-    - Capacitor
31
-  - CodetrixStudioCapacitorGoogleAuth (0.0.1):
32
-    - Capacitor
33
-    - GoogleSignIn (~> 6.2.4)
34
-  - FBAEMKit (16.1.3):
35
-    - FBSDKCoreKit_Basics (= 16.1.3)
36
-  - FBSDKCoreKit (16.1.3):
37
-    - FBAEMKit (= 16.1.3)
38
-    - FBSDKCoreKit_Basics (= 16.1.3)
39
-  - FBSDKCoreKit_Basics (16.1.3)
40
-  - FBSDKLoginKit (16.1.3):
41
-    - FBSDKCoreKit (= 16.1.3)
42
-  - Firebase/CoreOnly (10.17.0):
43
-    - FirebaseCore (= 10.17.0)
44
-  - Firebase/Messaging (10.17.0):
45
-    - Firebase/CoreOnly
46
-    - FirebaseMessaging (~> 10.17.0)
47
-  - FirebaseCore (10.17.0):
48
-    - FirebaseCoreInternal (~> 10.0)
49
-    - GoogleUtilities/Environment (~> 7.8)
50
-    - GoogleUtilities/Logger (~> 7.8)
51
-  - FirebaseCoreInternal (10.17.0):
52
-    - "GoogleUtilities/NSData+zlib (~> 7.8)"
53
-  - FirebaseInstallations (10.17.0):
54
-    - FirebaseCore (~> 10.0)
55
-    - GoogleUtilities/Environment (~> 7.8)
56
-    - GoogleUtilities/UserDefaults (~> 7.8)
57
-    - PromisesObjC (~> 2.1)
58
-  - FirebaseMessaging (10.17.0):
59
-    - FirebaseCore (~> 10.0)
60
-    - FirebaseInstallations (~> 10.0)
61
-    - GoogleDataTransport (~> 9.2)
62
-    - GoogleUtilities/AppDelegateSwizzler (~> 7.8)
63
-    - GoogleUtilities/Environment (~> 7.8)
64
-    - GoogleUtilities/Reachability (~> 7.8)
65
-    - GoogleUtilities/UserDefaults (~> 7.8)
66
-    - nanopb (< 2.30910.0, >= 2.30908.0)
67
-  - GoogleDataTransport (9.2.5):
68
-    - GoogleUtilities/Environment (~> 7.7)
69
-    - nanopb (< 2.30910.0, >= 2.30908.0)
70
-    - PromisesObjC (< 3.0, >= 1.2)
71
-  - GoogleSignIn (6.2.4):
72
-    - AppAuth (~> 1.5)
73
-    - GTMAppAuth (~> 1.3)
74
-    - GTMSessionFetcher/Core (< 3.0, >= 1.1)
75
-  - GoogleUtilities/AppDelegateSwizzler (7.11.6):
76
-    - GoogleUtilities/Environment
77
-    - GoogleUtilities/Logger
78
-    - GoogleUtilities/Network
79
-  - GoogleUtilities/Environment (7.11.6):
80
-    - PromisesObjC (< 3.0, >= 1.2)
81
-  - GoogleUtilities/Logger (7.11.6):
82
-    - GoogleUtilities/Environment
83
-  - GoogleUtilities/Network (7.11.6):
84
-    - GoogleUtilities/Logger
85
-    - "GoogleUtilities/NSData+zlib"
86
-    - GoogleUtilities/Reachability
87
-  - "GoogleUtilities/NSData+zlib (7.11.6)"
88
-  - GoogleUtilities/Reachability (7.11.6):
89
-    - GoogleUtilities/Logger
90
-  - GoogleUtilities/UserDefaults (7.11.6):
91
-    - GoogleUtilities/Logger
92
-  - GTMAppAuth (1.3.1):
93
-    - AppAuth/Core (~> 1.6)
94
-    - GTMSessionFetcher/Core (< 3.0, >= 1.5)
95
-  - GTMSessionFetcher/Core (2.3.0)
96
-  - nanopb (2.30909.1):
97
-    - nanopb/decode (= 2.30909.1)
98
-    - nanopb/encode (= 2.30909.1)
99
-  - nanopb/decode (2.30909.1)
100
-  - nanopb/encode (2.30909.1)
101
-  - PromisesObjC (2.3.1)
102
-
103
-DEPENDENCIES:
104
-  - "Capacitor (from `../../node_modules/@capacitor/ios`)"
105
-  - "CapacitorApp (from `../../node_modules/@capacitor/app`)"
106
-  - "CapacitorCommunityFacebookLogin (from `../../node_modules/@capacitor-community/facebook-login`)"
107
-  - "CapacitorCordova (from `../../node_modules/@capacitor/ios`)"
108
-  - "CapacitorHaptics (from `../../node_modules/@capacitor/haptics`)"
109
-  - "CapacitorKeyboard (from `../../node_modules/@capacitor/keyboard`)"
110
-  - "CapacitorPreferences (from `../../node_modules/@capacitor/preferences`)"
111
-  - "CapacitorPushNotifications (from `../../node_modules/@capacitor/push-notifications`)"
112
-  - "CapacitorShare (from `../../node_modules/@capacitor/share`)"
113
-  - "CapacitorStatusBar (from `../../node_modules/@capacitor/status-bar`)"
114
-  - "CapgoInappbrowser (from `../../node_modules/@capgo/inappbrowser`)"
115
-  - "CodetrixStudioCapacitorGoogleAuth (from `../../node_modules/@codetrix-studio/capacitor-google-auth`)"
116
-  - Firebase/Messaging
117
-
118
-SPEC REPOS:
119
-  trunk:
120
-    - AppAuth
121
-    - FBAEMKit
122
-    - FBSDKCoreKit
123
-    - FBSDKCoreKit_Basics
124
-    - FBSDKLoginKit
125
-    - Firebase
126
-    - FirebaseCore
127
-    - FirebaseCoreInternal
128
-    - FirebaseInstallations
129
-    - FirebaseMessaging
130
-    - GoogleDataTransport
131
-    - GoogleSignIn
132
-    - GoogleUtilities
133
-    - GTMAppAuth
134
-    - GTMSessionFetcher
135
-    - nanopb
136
-    - PromisesObjC
137
-
138
-EXTERNAL SOURCES:
139
-  Capacitor:
140
-    :path: "../../node_modules/@capacitor/ios"
141
-  CapacitorApp:
142
-    :path: "../../node_modules/@capacitor/app"
143
-  CapacitorCommunityFacebookLogin:
144
-    :path: "../../node_modules/@capacitor-community/facebook-login"
145
-  CapacitorCordova:
146
-    :path: "../../node_modules/@capacitor/ios"
147
-  CapacitorHaptics:
148
-    :path: "../../node_modules/@capacitor/haptics"
149
-  CapacitorKeyboard:
150
-    :path: "../../node_modules/@capacitor/keyboard"
151
-  CapacitorPreferences:
152
-    :path: "../../node_modules/@capacitor/preferences"
153
-  CapacitorPushNotifications:
154
-    :path: "../../node_modules/@capacitor/push-notifications"
155
-  CapacitorShare:
156
-    :path: "../../node_modules/@capacitor/share"
157
-  CapacitorStatusBar:
158
-    :path: "../../node_modules/@capacitor/status-bar"
159
-  CapgoInappbrowser:
160
-    :path: "../../node_modules/@capgo/inappbrowser"
161
-  CodetrixStudioCapacitorGoogleAuth:
162
-    :path: "../../node_modules/@codetrix-studio/capacitor-google-auth"
163
-
164
-SPEC CHECKSUMS:
165
-  AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570
166
-  Capacitor: 57890b363df14d5d2d5d8461aa23e886cb34da2a
167
-  CapacitorApp: 024e1b1bea5f883d79f6330d309bc441c88ad04a
168
-  CapacitorCommunityFacebookLogin: c0e2bb54cb567d90443a80ae20569fdac0df3f89
169
-  CapacitorCordova: 3d3908a3d208a11a75f9df3b18c4405c4de76e1d
170
-  CapacitorHaptics: 1fffc1217c7e64a472d7845be50fb0c2f7d4204c
171
-  CapacitorKeyboard: b978154b024a5f65e044908e37d15b7de58b9d12
172
-  CapacitorPreferences: f03954bcb0ff09c792909e46bff88e3183c16b10
173
-  CapacitorPushNotifications: b31e326c6e4eb216a622041d6ca21a973f34943f
174
-  CapacitorShare: cd41743331cb71d217c029de54b681cbd91e0fcc
175
-  CapacitorStatusBar: 565c0a1ebd79bb40d797606a8992b4a105885309
176
-  CapgoInappbrowser: a1d7b17df89659ece82ad102a0775786c6166512
177
-  CodetrixStudioCapacitorGoogleAuth: fcce058390347c1ce5d8ac4764bdf1f5c1ee233b
178
-  FBAEMKit: af2972f39bb0f3f7c45998f435b007833c32ffb2
179
-  FBSDKCoreKit: 19e2e18b3be578d7a51fed8fdd8c152bef0b9511
180
-  FBSDKCoreKit_Basics: dd9826ce3c9fd9f8cdf8dbbd0ef0a53e6c0c9e7e
181
-  FBSDKLoginKit: c395c63a1a6cf4a8a1e6103fd94b8c46329ee81c
182
-  Firebase: f4ac0b02927af9253ae094d23deecf0890da7374
183
-  FirebaseCore: 534544dd98cabcf4bf8598d88ec683b02319a528
184
-  FirebaseCoreInternal: 2cf9202e226e3f78d2bf6d56c472686b935bfb7f
185
-  FirebaseInstallations: 9387bf15abfc69a714f54e54f74a251264fdb79b
186
-  FirebaseMessaging: 1367b28c0c83a63072af4a711328fcc2e6899902
187
-  GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2
188
-  GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a
189
-  GoogleUtilities: 202e7a9f5128accd11160fb9c19612de1911aa19
190
-  GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd
191
-  GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2
192
-  nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
193
-  PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
194
-
195
-PODFILE CHECKSUM: e092ee1cde7b2ee2c683b5d37e9df1aa750682e4
196
-
197
-COCOAPODS: 1.12.1

Dosya farkı çok büyük olduğundan ihmal edildi
+ 3089 - 115
package-lock.json


+ 3 - 0
package.json

12
     "lint": "eslint"
12
     "lint": "eslint"
13
   },
13
   },
14
   "dependencies": {
14
   "dependencies": {
15
+    "@capacitor-community/apple-sign-in": "^5.0.0",
15
     "@capacitor-community/facebook-login": "^5.0.3",
16
     "@capacitor-community/facebook-login": "^5.0.3",
16
     "@capacitor/app": "5.0.6",
17
     "@capacitor/app": "5.0.6",
17
     "@capacitor/core": "5.5.0",
18
     "@capacitor/core": "5.5.0",
21
     "@capacitor/preferences": "^5.0.6",
22
     "@capacitor/preferences": "^5.0.6",
22
     "@capacitor/push-notifications": "^5.1.0",
23
     "@capacitor/push-notifications": "^5.1.0",
23
     "@capacitor/share": "^5.0.6",
24
     "@capacitor/share": "^5.0.6",
25
+    "@capacitor/splash-screen": "^5.0.6",
24
     "@capacitor/status-bar": "5.0.6",
26
     "@capacitor/status-bar": "5.0.6",
25
     "@capgo/inappbrowser": "^1.2.19",
27
     "@capgo/inappbrowser": "^1.2.19",
26
     "@codetrix-studio/capacitor-google-auth": "^3.3.4",
28
     "@codetrix-studio/capacitor-google-auth": "^3.3.4",
44
     "vue-vimeo-player": "^1.1.2"
46
     "vue-vimeo-player": "^1.1.2"
45
   },
47
   },
46
   "devDependencies": {
48
   "devDependencies": {
49
+    "@capacitor/assets": "^3.0.4",
47
     "@capacitor/cli": "5.5.0",
50
     "@capacitor/cli": "5.5.0",
48
     "@vitejs/plugin-legacy": "^4.0.2",
51
     "@vitejs/plugin-legacy": "^4.0.2",
49
     "@vitejs/plugin-vue": "^4.0.0",
52
     "@vitejs/plugin-vue": "^4.0.0",

BIN
public/images/circlelogo-trans.png


BIN
public/images/logo.png


+ 46 - 0
public/manifest.webmanifest

1
+{
2
+  "icons": [
3
+    {
4
+      "src": "../icons/icon-48.webp",
5
+      "type": "image/png",
6
+      "sizes": "48x48",
7
+      "purpose": "any maskable"
8
+    },
9
+    {
10
+      "src": "../icons/icon-72.webp",
11
+      "type": "image/png",
12
+      "sizes": "72x72",
13
+      "purpose": "any maskable"
14
+    },
15
+    {
16
+      "src": "../icons/icon-96.webp",
17
+      "type": "image/png",
18
+      "sizes": "96x96",
19
+      "purpose": "any maskable"
20
+    },
21
+    {
22
+      "src": "../icons/icon-128.webp",
23
+      "type": "image/png",
24
+      "sizes": "128x128",
25
+      "purpose": "any maskable"
26
+    },
27
+    {
28
+      "src": "../icons/icon-192.webp",
29
+      "type": "image/png",
30
+      "sizes": "192x192",
31
+      "purpose": "any maskable"
32
+    },
33
+    {
34
+      "src": "../icons/icon-256.webp",
35
+      "type": "image/png",
36
+      "sizes": "256x256",
37
+      "purpose": "any maskable"
38
+    },
39
+    {
40
+      "src": "../icons/icon-512.webp",
41
+      "type": "image/png",
42
+      "sizes": "512x512",
43
+      "purpose": "any maskable"
44
+    }
45
+  ]
46
+}

+ 13 - 2
src/App.vue

5
 </template>
5
 </template>
6
 
6
 
7
 <script setup lang="ts">
7
 <script setup lang="ts">
8
-import { IonApp, IonRouterOutlet, onIonViewWillEnter } from '@ionic/vue';
8
+import { IonApp, IonRouterOutlet, onIonViewWillEnter, onIonViewDidEnter } from '@ionic/vue';
9
 import { defineComponent, onMounted } from 'vue';
9
 import { defineComponent, onMounted } from 'vue';
10
+import { SplashScreen } from '@capacitor/splash-screen';
10
 
11
 
11
 
12
 
12
 
13
 
14
+onMounted(async () => {
15
+  //alert("Hello");
16
+  /*
17
+  await SplashScreen.show({
18
+    showDuration: 2000,
19
+    autoHide: true,
20
+  });*/
21
+});
22
+
13
 onIonViewWillEnter(() => {
23
 onIonViewWillEnter(() => {
14
   console.log("Init On Mouting")
24
   console.log("Init On Mouting")
15
 });
25
 });
16
-
26
+onIonViewDidEnter(() => {
27
+});
17
 </script>
28
 </script>

+ 1 - 1
src/components/SearchItem.vue

3
     <ion-thumbnail slot="start">
3
     <ion-thumbnail slot="start">
4
       <ion-img alt="Silhouette of mountains" :src="thmb"  v-if="thmb" />
4
       <ion-img alt="Silhouette of mountains" :src="thmb"  v-if="thmb" />
5
     </ion-thumbnail>
5
     </ion-thumbnail>
6
-    <ion-label>{{ name }} <br><span class='small'><ion-icon :icon="timer" size="small" />{{ dt }}</span></ion-label>
6
+    <ion-label color="light">{{ name }} <br><span class='small'><ion-icon :icon="timer" size="small" />{{ dt }}</span></ion-label>
7
   </ion-item>
7
   </ion-item>
8
 </template>
8
 </template>
9
 
9
 

+ 36 - 5
src/composable/settings.ts

12
 export const BASE_URL = 'http://localhost:8020/'
12
 export const BASE_URL = 'http://localhost:8020/'
13
 //export const BASE_URL = 'https://www.tigermuaythai.live/'
13
 //export const BASE_URL = 'https://www.tigermuaythai.live/'
14
 
14
 
15
+export const APPLE_CALLBACK = BASE_URL + "soc_accounts/apple/login/callback/";
15
 //const axios = setupCache(Axios); 
16
 //const axios = setupCache(Axios); 
16
 //
17
 //
17
 //axios.defaults.xsrfHeaderName = "X-CSRFTOKEN";
18
 //axios.defaults.xsrfHeaderName = "X-CSRFTOKEN";
43
   console.log("get token ")
44
   console.log("get token ")
44
   const token = await Preferences.get({ key: 'token' });
45
   const token = await Preferences.get({ key: 'token' });
45
   console.log(token)
46
   console.log(token)
46
-  if( token.value == null ) {
47
+  if( token.value == null || token.value == "" ) {
47
     //const { data } = await axios.post(BASE_URL + "api-token-auth/", {username: 'root', password: 'Tum 1984'})
48
     //const { data } = await axios.post(BASE_URL + "api-token-auth/", {username: 'root', password: 'Tum 1984'})
48
     const { data } = await axios.post(BASE_URL + "dj-rest-auth/login/", {username: 'root', password: 'Tum 1984'})
49
     const { data } = await axios.post(BASE_URL + "dj-rest-auth/login/", {username: 'root', password: 'Tum 1984'})
49
     console.log("get token ", data)
50
     console.log("get token ", data)
265
     headers: {
266
     headers: {
266
       'Content-Type': 'application/json', 
267
       'Content-Type': 'application/json', 
267
     }
268
     }
268
-  }).catch((error) => {
269
-    console.log("fb error = ", error)
270
   })
269
   })
270
+  //.catch((error) => {
271
+    //console.log("fb error = ", error)
272
+  //})
271
   console.log("facebook login = ", data)
273
   console.log("facebook login = ", data)
272
   return data
274
   return data
273
 }
275
 }
280
     headers: {
282
     headers: {
281
       'Content-Type': 'application/json', 
283
       'Content-Type': 'application/json', 
282
     }
284
     }
283
-  }).catch((error) => {
284
-    console.log("gg error = ", error)
285
   })
285
   })
286
+  //.catch((error) => {
287
+    //console.log("gg error = ", error)
288
+  //})
286
   console.log("gg login = ", data)
289
   console.log("gg login = ", data)
287
   return data
290
   return data
288
 }
291
 }
389
   console.info(data)
392
   console.info(data)
390
   return data
393
   return data
391
 }
394
 }
395
+
396
+
397
+export const updateNoti = async (noti) => {
398
+  const token = await Preferences.get({ key: 'token' });
399
+  console.log("token = ", token)
400
+  const { data } = await axios.post(BASE_URL + `backend/api/profiles/update_noti/`,
401
+  {live_noti: noti.liveNoti, 'news_noti':noti.newsNoti},
402
+  {
403
+    headers: { 
404
+    'Authorization': `Token ${token.value}`
405
+    }
406
+  })
407
+  console.info(data)
408
+  return data
409
+}
410
+
411
+export const appleLogin = async(access_token) => {
412
+
413
+  const token = await Preferences.get({ key: 'token' });
414
+  console.log("access_code = ", access_token)
415
+  const { data } = await axios.post(BASE_URL + 'dj-rest-auth/apple/',{access_token: access_token.authorizationCode, id_token: access_token.identityToken}, {
416
+    headers: {
417
+      'Content-Type': 'application/json', 
418
+    }
419
+  })
420
+  console.log("apple login = ", data)
421
+  return data
422
+}

+ 1 - 0
src/views/CourseMatDetailPage.vue

10
       </ion-toolbar>
10
       </ion-toolbar>
11
     </ion-header>
11
     </ion-header>
12
     <ion-content class='ion-text-wrap'>
12
     <ion-content class='ion-text-wrap'>
13
+      
13
       <div style="padding:56.25% 0 0 0;position:relative;" v-html="mat.embed" v-if='mat'></div>
14
       <div style="padding:56.25% 0 0 0;position:relative;" v-html="mat.embed" v-if='mat'></div>
14
       <div v-if="mat" class='ion-padding ion-text-wrap'>
15
       <div v-if="mat" class='ion-padding ion-text-wrap'>
15
         <h2 v-if='name'>{{ name }}</h2>
16
         <h2 v-if='name'>{{ name }}</h2>

+ 98 - 15
src/views/ProfilePage.vue

16
             <ion-label>Notifications</ion-label>
16
             <ion-label>Notifications</ion-label>
17
           </ion-list-header>
17
           </ion-list-header>
18
           <ion-item>
18
           <ion-item>
19
-            <ion-toggle v-model="liveNoti" color="primary">Receive Live Notifications</ion-toggle>
19
+            <ion-toggle v-model="noti.liveNoti" color="primary" @ionChange="onNoti">Receive Live Notifications</ion-toggle>
20
           </ion-item>
20
           </ion-item>
21
           <ion-item>
21
           <ion-item>
22
-            <ion-toggle v-model="newsNoti">Receive News Update</ion-toggle>
22
+            <ion-toggle v-model="noti.newsNoti" @ionChange="onNoti">Receive News Update</ion-toggle>
23
           </ion-item>
23
           </ion-item>
24
           <ion-list-header>
24
           <ion-list-header>
25
             <ion-label>Select Courses You like</ion-label>
25
             <ion-label>Select Courses You like</ion-label>
41
       <ion-button @click='fbLogout' expand='full'>Logout</ion-button>
41
       <ion-button @click='fbLogout' expand='full'>Logout</ion-button>
42
       </template>
42
       </template>
43
       <template v-else>
43
       <template v-else>
44
+        <ion-img src="/images/circlelogo-trans.png" style='width:200px; margin:10px auto' />
44
         <LoginForm @user-login="userLogin" />
45
         <LoginForm @user-login="userLogin" />
45
         <ion-grid>
46
         <ion-grid>
46
             <ion-row>
47
             <ion-row>
52
               </ion-col>
53
               </ion-col>
53
             </ion-row>
54
             </ion-row>
54
         </ion-grid>
55
         </ion-grid>
56
+        <div color="light" v-if="formError" class='ion-margin ion-text-center'>{{ formError }}</div>
55
         <ion-grid>
57
         <ion-grid>
58
+          <h3 class='ion-text-center'>Login With</h3>
56
           <ion-row class='ion-justify-content-center'>
59
           <ion-row class='ion-justify-content-center'>
57
-            <ion-col size=6>
58
-              <ion-button @click='fbLogin' expand='full'>Facebook Login</ion-button>
60
+            <ion-col size=4>
61
+              <ion-button @click='fbLogin' expand='full'>
62
+                <ion-icon slot="start" :icon="logoFacebook"></ion-icon>
63
+
64
+                Facebook</ion-button>
65
+            </ion-col>
66
+            <ion-col size=4>
67
+              <ion-button @click='ggLoginClick' expand='full'>
68
+
69
+                <ion-icon slot="start" :icon="logoGoogle"></ion-icon>
70
+                Google</ion-button>
59
             </ion-col>
71
             </ion-col>
60
-            <ion-col size=6>
61
-              <ion-button @click='ggLoginClick' expand='full'>Google Login</ion-button>
72
+            <ion-col size=4>
73
+              <ion-button @click='onAppleLogin' expand='full'>
74
+                <ion-icon slot="start" :icon="logoApple"></ion-icon>
75
+                Apple</ion-button>
62
             </ion-col>
76
             </ion-col>
63
           </ion-row>
77
           </ion-row>
64
         </ion-grid>
78
         </ion-grid>
65
-        <ion-text color="danger" v-if="formError">{{ formError }}</ion-text>
66
       </template>
79
       </template>
67
     </ion-content>
80
     </ion-content>
68
   </ion-page>
81
   </ion-page>
74
 import LoginForm from '@/components/LoginForm.vue';
87
 import LoginForm from '@/components/LoginForm.vue';
75
 import { defineComponent, onMounted } from 'vue';
88
 import { defineComponent, onMounted } from 'vue';
76
 import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
89
 import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
77
-import { facebookLogin, setUserToken, logout, clearPref, BASE_URL, listCourses, getPref, likeCourse, isLogin, ggLogin } from '@/composable/settings';
90
+import { facebookLogin, setUserToken, logout, clearPref, BASE_URL, listCourses, getPref, likeCourse, isLogin, ggLogin, updateNoti, APPLE_CALLBACK, appleLogin } from '@/composable/settings';
78
 import { InAppBrowser } from '@capgo/inappbrowser'
91
 import { InAppBrowser } from '@capgo/inappbrowser'
79
-import { close, closeCircle, pin } from 'ionicons/icons';
92
+import { close, closeCircle, pin, logoApple, logoFacebook, logoGoogle  } from 'ionicons/icons';
80
 
93
 
81
 
94
 
95
+import {
96
+  SignInWithApple,
97
+  SignInWithAppleResponse,
98
+  SignInWithAppleOptions,
99
+} from '@capacitor-community/apple-sign-in';
100
+
101
+let apple_options: SignInWithAppleOptions = {
102
+  clientId: 'net.simplico.tmtlive',
103
+  redirectURI: APPLE_CALLBACK,
104
+  scopes: 'email name',
105
+  state: 'TMTLIVE',
106
+  nonce: 'nonce',
107
+};
82
 
108
 
83
 
109
 
84
 onMounted(() => {
110
 onMounted(() => {
90
   FacebookLoginResponse,
116
   FacebookLoginResponse,
91
 } from '@capacitor-community/facebook-login';
117
 } from '@capacitor-community/facebook-login';
92
 
118
 
93
-import { ref } from 'vue';
119
+import { ref, reactive } from 'vue';
94
 
120
 
95
 const FACEBOOK_PERMISSIONS = [
121
 const FACEBOOK_PERMISSIONS = [
96
   'email',
122
   'email',
107
 const formError = ref(null)
133
 const formError = ref(null)
108
 const selecteds = ref([])
134
 const selecteds = ref([])
109
 const myprofile = ref()
135
 const myprofile = ref()
110
-
136
+const noti = reactive({liveNoti: true, newsNoti: true});
111
 const openReset = async () => {
137
 const openReset = async () => {
112
   console.log("open Reset")
138
   console.log("open Reset")
113
   const browser = await InAppBrowser.open({ url: BASE_URL + "accounts/password_reset/" });
139
   const browser = await InAppBrowser.open({ url: BASE_URL + "accounts/password_reset/" });
150
       refIsLogin.value = true
176
       refIsLogin.value = true
151
       
177
       
152
     }catch(error) {
178
     }catch(error) {
153
-      formError.value = "Please Check Your UserId/Password"
179
+      console.log(error);
180
+      formError.value = error.response.data.non_field_errors.join("\n");
154
       console.log(error)
181
       console.log(error)
155
     }
182
     }
156
   }
183
   }
172
       // Login successful.
199
       // Login successful.
173
       refIsLogin.value = true
200
       refIsLogin.value = true
174
     }catch(error) {
201
     }catch(error) {
175
-      formError.value = "Please Check Your UserId/Password"
202
+      formError.value = error.response.data.non_field_errors.join("\n");
176
     }
203
     }
177
     console.log(`Facebook access token is ${result.accessToken.token}`);
204
     console.log(`Facebook access token is ${result.accessToken.token}`);
178
   }
205
   }
190
 onIonViewWillEnter(async () => {
217
 onIonViewWillEnter(async () => {
191
   console.log("ion view will enter")
218
   console.log("ion view will enter")
192
   console.log(await isLogin())
219
   console.log(await isLogin())
220
+  /*
193
   const result = await (<FacebookLoginResponse>(
221
   const result = await (<FacebookLoginResponse>(
194
     FacebookLogin.getCurrentAccessToken()
222
     FacebookLogin.getCurrentAccessToken()
195
   ));
223
   ));
200
     await getProfile()
228
     await getProfile()
201
   }else {
229
   }else {
202
     refIsLogin.value = false
230
     refIsLogin.value = false
203
-  }
231
+  }*/
204
 
232
 
205
   list_courses.value = await listCourses()
233
   list_courses.value = await listCourses()
206
-  ggCheckLogin()
234
+  //ggCheckLogin()
235
+
236
+  //appleCheckLogin()
237
+
207
   refIsLogin.value = await isLogin()
238
   refIsLogin.value = await isLogin()
208
   if( refIsLogin.value == true ) {
239
   if( refIsLogin.value == true ) {
209
     myprofile.value  = await getPref()
240
     myprofile.value  = await getPref()
231
             }
262
             }
232
         });
263
         });
233
 }
264
 }
265
+const appleCheckLogin = async() => {
266
+
267
+  SignInWithApple.authorize(apple_options)
268
+  .then(async (result: SignInWithAppleResponse) => {
269
+    console.debug(result);
270
+    // Handle user information
271
+    try{
272
+      //let d = await appleLogin(result.response)
273
+      //console.log("apple authen ", d)
274
+      //await setUserToken(d.key)
275
+      myprofile.value  = await getPref()
276
+      //await getProfile()
277
+      // Login successful.
278
+      refIsLogin.value = true
279
+    }catch(error) {
280
+      console.log("apple check login ", error);
281
+      //formError.value = error.response.data.non_field_errors[0]
282
+    }
283
+    // Validate token with server and create new session
284
+  })
285
+  .catch(error => {
286
+    // Handle error
287
+  });
288
+}
234
 const clear = async() => {
289
 const clear = async() => {
235
   await clearPref()
290
   await clearPref()
236
 }
291
 }
260
   }
315
   }
261
 
316
 
262
 }
317
 }
318
+const onNoti = async(ev) => {
319
+  console.log(noti);
320
+  const data = await updateNoti(noti);
321
+  console.log(data);
322
+}
323
+const onAppleLogin = async () => { 
324
+  SignInWithApple.authorize(apple_options)
325
+  .then(async (result: SignInWithAppleResponse) => {
326
+    console.debug(result);
327
+    // Handle user information
328
+    try{
329
+      let d = await appleLogin(result.response)
330
+      console.log("apple authen ", d)
331
+      await setUserToken(d.key)
332
+      myprofile.value  = await getPref()
333
+      //await getProfile()
334
+      // Login successful.
335
+      refIsLogin.value = true
336
+    }catch(error) {
337
+      console.log(error);
338
+      formError.value = error.response.data.non_field_errors.join("\n");
339
+    }
340
+    // Validate token with server and create new session
341
+  })
342
+  .catch(error => {
343
+    // Handle error
344
+  });
345
+}
263
 </script>
346
 </script>

+ 19 - 6
src/views/Tab1Page.vue

61
 <script setup lang="ts">
61
 <script setup lang="ts">
62
 
62
 
63
   import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonIcon, onIonViewWillEnter, IonButton, 
63
   import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonIcon, onIonViewWillEnter, IonButton, 
64
-  onIonViewWillLeave, IonItem, IonLabel, IonThumbnail, IonCol, IonGrid, IonRow, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, onIonViewDidEnter,  IonButtons, IonImg } from '@ionic/vue';
64
+  onIonViewWillLeave, IonItem, IonLabel, IonThumbnail, IonCol, IonGrid, IonRow, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, onIonViewDidEnter,  IonButtons, IonImg, useIonRouter } from '@ionic/vue';
65
 
65
 
66
 import ExploreContainer  from '@/components/ExploreContainer.vue';
66
 import ExploreContainer  from '@/components/ExploreContainer.vue';
67
 import CourseSchedule from '@/components/CourseSchedule.vue'
67
 import CourseSchedule from '@/components/CourseSchedule.vue'
72
 import { CapacitorHttp } from '@capacitor/core';
72
 import { CapacitorHttp } from '@capacitor/core';
73
 import { ref } from 'vue';
73
 import { ref } from 'vue';
74
 import { TOKEN, getProducts, setToken, getObject, getToken, getTrainers, listMats, storeAPNToken,
74
 import { TOKEN, getProducts, setToken, getObject, getToken, getTrainers, listMats, storeAPNToken,
75
-getTodayProgs, getLive, getPosts, initAPI} from '@/composable/settings';
75
+getTodayProgs, getLive, getPosts, initAPI, clearPref, isLogin} from '@/composable/settings';
76
 //import VueCoreVideoPlayer from 'vue-core-video-player'
76
 //import VueCoreVideoPlayer from 'vue-core-video-player'
77
 import { vueVimeoPlayer } from 'vue-vimeo-player'
77
 import { vueVimeoPlayer } from 'vue-vimeo-player'
78
 
78
 
105
 };
105
 };
106
 const items = ref([{msg: 'foo'}, {msg: 'bar2'}])
106
 const items = ref([{msg: 'foo'}, {msg: 'bar2'}])
107
 
107
 
108
+const ionRouter = useIonRouter();
109
+
108
 const options = {
110
 const options = {
109
       id: 59777392,
111
       id: 59777392,
110
       width: 640,
112
       width: 640,
117
 const liveObj = ref()
119
 const liveObj = ref()
118
 const modules =  [Autoplay, Keyboard, Pagination, Scrollbar, Zoom]
120
 const modules =  [Autoplay, Keyboard, Pagination, Scrollbar, Zoom]
119
   onIonViewWillEnter(async () => {
121
   onIonViewWillEnter(async () => {
122
+    let v = await isLogin()
123
+    console.log("v === ", v)
124
+    if( v == false ) {
125
+      ionRouter.navigate('/tabs/tab4', 'forward', 'replace');
126
+    }
120
     //console.log("video " ,video)
127
     //console.log("video " ,video)
121
     //console.log("video id", video.value.id)
128
     //console.log("video id", video.value.id)
122
     //const player = new Player(video.value.id, options);
129
     //const player = new Player(video.value.id, options);
134
     //console.log('u ', u)
141
     //console.log('u ', u)
135
     await initAPI()
142
     await initAPI()
136
     token.value = await getToken()
143
     token.value = await getToken()
137
-    getTrainers().then( (data) => {
138
-      trainers.value = data
139
-    })
144
+    
145
+    try{
146
+      trainers.value = await getTrainers()
147
+    }catch(error){
148
+      console.log("trainers ", error)
149
+      await clearPref()
150
+      token.value = await getToken()
151
+    }
152
+
140
     listMats().then( (data) => {
153
     listMats().then( (data) => {
141
       mats.value = data
154
       mats.value = data
142
     })
155
     })
157
       if( liveObj.value == null ||  liveObj.value.result == false ) {
170
       if( liveObj.value == null ||  liveObj.value.result == false ) {
158
         liveObj.value = await getLive()
171
         liveObj.value = await getLive()
159
       }
172
       }
160
-    }, 10000)
173
+    }, 100000)
161
   })
174
   })
162
 
175
 
163
   onIonViewWillLeave(() => {
176
   onIonViewWillLeave(() => {

+ 10 - 2
src/views/Tab2Page.vue

31
 </template>
31
 </template>
32
 
32
 
33
 <script setup lang="ts">
33
 <script setup lang="ts">
34
-import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonGrid, IonRow, IonCol, onIonViewWillEnter, IonProgressBar, IonIcon, IonButtons, IonButton} from '@ionic/vue';
34
+import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonGrid, IonRow, IonCol, onIonViewWillEnter, IonProgressBar, IonIcon, IonButtons, IonButton, useIonRouter} from '@ionic/vue';
35
 import { search } from 'ionicons/icons';
35
 import { search } from 'ionicons/icons';
36
 
36
 
37
 import Course from '@/components/Course.vue';
37
 import Course from '@/components/Course.vue';
38
 import { ref } from 'vue';
38
 import { ref } from 'vue';
39
 
39
 
40
-import {listCourses} from '@/composable/settings';
40
+import {listCourses, isLogin} from '@/composable/settings';
41
 const courses = ref([]);
41
 const courses = ref([]);
42
 const processing = ref(false);
42
 const processing = ref(false);
43
+const ionRouter = useIonRouter();
44
+
43
 onIonViewWillEnter(async () => {
45
 onIonViewWillEnter(async () => {
46
+  let v = await isLogin()
47
+  console.log("v === ", v)
48
+  if( v == false ) {
49
+    ionRouter.navigate('/tabs/tab4', 'forward', 'replace');
50
+  }
51
+
44
   processing.value = true;
52
   processing.value = true;
45
   courses.value = await listCourses()
53
   courses.value = await listCourses()
46
   processing.value = false;
54
   processing.value = false;

+ 8 - 2
src/views/Tab3Page.vue

81
 
81
 
82
 <script setup lang="ts">
82
 <script setup lang="ts">
83
 import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonIcon, IonSegment, IonSegmentButton, onIonViewWillEnter, IonGrid, 
83
 import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent, IonIcon, IonSegment, IonSegmentButton, onIonViewWillEnter, IonGrid, 
84
-IonRow, IonCol, IonButton, IonButtons } from '@ionic/vue';
84
+IonRow, IonCol, IonButton, IonButtons, useIonRouter } from '@ionic/vue';
85
 import { home, heart, pin, star, call, globe, basket, barbell, trash, person, search } from 'ionicons/icons';
85
 import { home, heart, pin, star, call, globe, basket, barbell, trash, person, search } from 'ionicons/icons';
86
 import ExploreContainer from '@/components/ExploreContainer.vue';
86
 import ExploreContainer from '@/components/ExploreContainer.vue';
87
 import CourseSchedule from '@/components/CourseSchedule.vue';
87
 import CourseSchedule from '@/components/CourseSchedule.vue';
88
 import { ref } from 'vue';
88
 import { ref } from 'vue';
89
 
89
 
90
-import { getTodayProgs } from '@/composable/settings';
90
+import { getTodayProgs, isLogin } from '@/composable/settings';
91
 
91
 
92
 const today = ref()
92
 const today = ref()
93
 const weekday = ["sun","mon","tue","wed","thu","fri","sat"];
93
 const weekday = ["sun","mon","tue","wed","thu","fri","sat"];
98
 const fri = ref()
98
 const fri = ref()
99
 const sat = ref()
99
 const sat = ref()
100
 const sun = ref()
100
 const sun = ref()
101
+const ionRouter = useIonRouter();
101
 
102
 
102
 onIonViewWillEnter( async () => {
103
 onIonViewWillEnter( async () => {
103
   const d = new Date();
104
   const d = new Date();
104
   console.log(" d ", d.getDay())
105
   console.log(" d ", d.getDay())
106
+  let v = await isLogin()
107
+  console.log("v === ", v)
108
+  if( v == false ) {
109
+    ionRouter.navigate('/tabs/tab4', 'forward', 'replace');
110
+  }
105
   today.value = weekday[d.getDay()];
111
   today.value = weekday[d.getDay()];
106
   mon.value = await getTodayProgs("mon")
112
   mon.value = await getTodayProgs("mon")
107
   tue.value = await getTodayProgs("tue")
113
   tue.value = await getTodayProgs("tue")

+ 7 - 1
src/views/TabsPage.vue

27
 </template>
27
 </template>
28
 
28
 
29
 <script setup lang="ts">
29
 <script setup lang="ts">
30
-import { IonTabBar, IonTabButton, IonTabs, IonLabel, IonIcon, IonPage, IonRouterOutlet } from '@ionic/vue';
30
+import { IonTabBar, IonTabButton, IonTabs, IonLabel, IonIcon, IonPage, IonRouterOutlet, onIonViewWillEnter, useIonRouter } from '@ionic/vue';
31
 import { ellipse, square, triangle, person, time, videocam, grid } from 'ionicons/icons';
31
 import { ellipse, square, triangle, person, time, videocam, grid } from 'ionicons/icons';
32
+import { isLogin } from '@/composable/settings';
32
 
33
 
34
+const ionRouter = useIonRouter();
35
+
36
+onIonViewWillEnter(async () => {
37
+  console.log("tabs init ...")
38
+})
33
 </script>
39
 </script>