From 3002510aaf23cb7f32f412e9d62a8cbb66d76f00 Mon Sep 17 00:00:00 2001 From: oscarz Date: Mon, 12 Aug 2024 10:26:21 +0800 Subject: [PATCH] Initial commit --- .../project.pbxproj" | 333 +++++++++++++++++- .../contents.xcworkspacedata" | 0 .../xcshareddata/IDEWorkspaceChecks.plist" | 0 .../xcschemes/AIGrammar.xcscheme" | 101 ++++++ .../xcschemes/xcschememanagement.plist" | 32 ++ .../AIGrammar.entitlements | 10 +- AIGrammar/AllTabView.swift | 80 +++++ .../AppIcon.appiconset/Contents.json | 129 ++++++- .../AppIcon.appiconset/icon-1024.png | Bin 0 -> 108933 bytes .../AppIcon.appiconset/icon-20@2x.png | Bin 0 -> 2462 bytes .../AppIcon.appiconset/icon-20@3x.png | Bin 0 -> 3393 bytes .../AppIcon.appiconset/icon-29@2x.png | Bin 0 -> 3219 bytes .../AppIcon.appiconset/icon-29@3x.png | Bin 0 -> 5401 bytes .../AppIcon.appiconset/icon-38@2x.png | Bin 0 -> 4595 bytes .../AppIcon.appiconset/icon-38@3x.png | Bin 0 -> 7784 bytes .../AppIcon.appiconset/icon-40@2x.png | Bin 0 -> 4913 bytes .../AppIcon.appiconset/icon-40@3x.png | Bin 0 -> 8354 bytes .../AppIcon.appiconset/icon-60@2x.png | Bin 0 -> 8354 bytes .../AppIcon.appiconset/icon-60@3x.png | Bin 0 -> 14293 bytes .../AppIcon.appiconset/icon-64@2x.png | Bin 0 -> 9041 bytes .../AppIcon.appiconset/icon-64@3x.png | Bin 0 -> 15781 bytes .../AppIcon.appiconset/icon-68@2x.png | Bin 0 -> 9642 bytes .../AppIcon.appiconset/icon-76@2x.png | Bin 0 -> 11343 bytes .../AppIcon.appiconset/icon-83.5@2x.png | Bin 0 -> 12668 bytes .../vipimg.imageset/Contents.json | 33 ++ .../Assets.xcassets/vipimg.imageset/crown.png | Bin 0 -> 7258 bytes AIGrammar/CommView/LoadingView.swift | 18 + AIGrammar/GrammarSubView/CameraView.swift | 18 + AIGrammar/GrammarSubView/IAPTestView.swift | 18 + AIGrammar/GrammarSubView/InputView.swift | 18 + AIGrammar/GrammarSubView/ResultView.swift | 18 + AIGrammar/GrammarSubView/RichText.swift | 18 + AIGrammar/GrammarSubView/ShareSheet.swift | 18 + AIGrammar/View/GrammarCheckView.swift | 18 + AIGrammar/View/IAPView.swift | 18 + AIGrammar/View/SettingsView.swift | 18 + AIGrammar/View/TranslateView.swift | 18 + AIGrammar/View/WordsView.swift | 18 + AIGrammar/ViewModel/Config.swift | 8 + AIGrammar/ViewModel/GrammarData.swift | 22 ++ AIGrammar/lib/ColorToString.swift | 8 + AIGrammar/lib/CommFunc.swift | 8 + AIGrammar/lib/IapManager.swift | 8 + AIGrammar/lib/InitAPP.swift | 10 + AIGrammar/lib/LogManager.swift | 8 + AIGrammar/lib/NetworkManager.swift | 233 ++++++++++++ 46 files changed, 1210 insertions(+), 29 deletions(-) rename AIGrammar.xcodeproj/project.pbxproj => "\t\t.xcodeproj/project.pbxproj" (50%) rename AIGrammar.xcodeproj/project.xcworkspace/contents.xcworkspacedata => "\t\t.xcodeproj/project.xcworkspace/contents.xcworkspacedata" (100%) rename AIGrammar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist => "\t\t.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" (100%) create mode 100644 "\t\t.xcodeproj/xcshareddata/xcschemes/AIGrammar.xcscheme" create mode 100644 "\t\t.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist" rename AIGrammar.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist => AIGrammar/AIGrammar.entitlements (54%) create mode 100644 AIGrammar/AllTabView.swift create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-1024.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png create mode 100644 AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png create mode 100644 AIGrammar/Assets.xcassets/vipimg.imageset/Contents.json create mode 100644 AIGrammar/Assets.xcassets/vipimg.imageset/crown.png create mode 100644 AIGrammar/CommView/LoadingView.swift create mode 100644 AIGrammar/GrammarSubView/CameraView.swift create mode 100644 AIGrammar/GrammarSubView/IAPTestView.swift create mode 100644 AIGrammar/GrammarSubView/InputView.swift create mode 100644 AIGrammar/GrammarSubView/ResultView.swift create mode 100644 AIGrammar/GrammarSubView/RichText.swift create mode 100644 AIGrammar/GrammarSubView/ShareSheet.swift create mode 100644 AIGrammar/View/GrammarCheckView.swift create mode 100644 AIGrammar/View/IAPView.swift create mode 100644 AIGrammar/View/SettingsView.swift create mode 100644 AIGrammar/View/TranslateView.swift create mode 100644 AIGrammar/View/WordsView.swift create mode 100644 AIGrammar/ViewModel/Config.swift create mode 100644 AIGrammar/ViewModel/GrammarData.swift create mode 100644 AIGrammar/lib/ColorToString.swift create mode 100644 AIGrammar/lib/CommFunc.swift create mode 100644 AIGrammar/lib/IapManager.swift create mode 100644 AIGrammar/lib/InitAPP.swift create mode 100644 AIGrammar/lib/LogManager.swift create mode 100644 AIGrammar/lib/NetworkManager.swift diff --git a/AIGrammar.xcodeproj/project.pbxproj "b/\t\t.xcodeproj/project.pbxproj" similarity index 50% rename from AIGrammar.xcodeproj/project.pbxproj rename to "\t\t.xcodeproj/project.pbxproj" index 3e62eeb..86af8ad 100644 --- a/AIGrammar.xcodeproj/project.pbxproj +++ "b/\t\t.xcodeproj/project.pbxproj" @@ -16,6 +16,31 @@ 5500A3A62BB3C7EC0065A1D3 /* AIGrammarTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3A52BB3C7EC0065A1D3 /* AIGrammarTests.swift */; }; 5500A3B02BB3C7EC0065A1D3 /* AIGrammarUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3AF2BB3C7EC0065A1D3 /* AIGrammarUITests.swift */; }; 5500A3B22BB3C7EC0065A1D3 /* AIGrammarUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3B12BB3C7EC0065A1D3 /* AIGrammarUITestsLaunchTests.swift */; }; + 5500A3C02BB40A3B0065A1D3 /* AllTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3BF2BB40A3B0065A1D3 /* AllTabView.swift */; }; + 5500A3C22BB40AB10065A1D3 /* GrammarCheckView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3C12BB40AB10065A1D3 /* GrammarCheckView.swift */; }; + 5500A3C42BB40AC40065A1D3 /* WordsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3C32BB40AC40065A1D3 /* WordsView.swift */; }; + 5500A3C62BB40AD30065A1D3 /* TranslateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3C52BB40AD30065A1D3 /* TranslateView.swift */; }; + 5500A3C82BB40ADE0065A1D3 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5500A3C72BB40ADE0065A1D3 /* SettingsView.swift */; }; + 5509CEEE2BB526F80056C5C2 /* ColorToString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5509CEED2BB526F70056C5C2 /* ColorToString.swift */; }; + 5509CEF12BB54DD10056C5C2 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5509CEF02BB54DD10056C5C2 /* Config.swift */; }; + 550B85A22C2BC624008834E5 /* InitAPP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550B85A12C2BC623008834E5 /* InitAPP.swift */; }; + 559E6D7C2C34EAE700C971B9 /* IapManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 559E6D7B2C34EAE700C971B9 /* IapManager.swift */; }; + 559E6D7E2C35355200C971B9 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 559E6D7D2C35355200C971B9 /* LogManager.swift */; }; + 55A954A22BBBFD0C00BF181E /* GrammarData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55A954A12BBBFD0C00BF181E /* GrammarData.swift */; }; + 55BB12792BBD4C9900D2BEA4 /* RichText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BB12782BBD4C9900D2BEA4 /* RichText.swift */; }; + 55BB127B2BBD653100D2BEA4 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BB127A2BBD653100D2BEA4 /* ShareSheet.swift */; }; + 55BB127D2BBD6D0600D2BEA4 /* CameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BB127C2BBD6D0600D2BEA4 /* CameraView.swift */; }; + 55BC47492C3A383A00120A7D /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BC47482C3A383A00120A7D /* LoadingView.swift */; }; + 55BC474F2C3A4E5E00120A7D /* ToastUI in Frameworks */ = {isa = PBXBuildFile; productRef = 55BC474E2C3A4E5E00120A7D /* ToastUI */; }; + 55BC47512C3D431300120A7D /* IAPView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BC47502C3D431300120A7D /* IAPView.swift */; }; + 55D632FA2C0F125D00443894 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55D632F92C0F125D00443894 /* NetworkManager.swift */; }; + 55DAC6552BBA959500BDD4C8 /* ResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55DAC6542BBA959500BDD4C8 /* ResultView.swift */; }; + 55DAC6572BBA984B00BDD4C8 /* InputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55DAC6562BBA984B00BDD4C8 /* InputView.swift */; }; + 55EF5C3C2C2250900060CE47 /* IAPTestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55EF5C3B2C2250900060CE47 /* IAPTestView.swift */; }; + 55EF5C3E2C2263460060CE47 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55EF5C3D2C2263460060CE47 /* StoreKit.framework */; }; + 67F268687FCD2E4F2F4462C0 /* Pods_AIGrammar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12CA1A1A0FE978794C445DBF /* Pods_AIGrammar.framework */; }; + 74F2A468AB0CDAB987996958 /* Pods_AIGrammarTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D848C5F909AA8F5965ADC982 /* Pods_AIGrammarTests.framework */; }; + 9C67AFB08807D99E5D33962E /* Pods_AIGrammar_AIGrammarUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17A4761E5C3381A5C601C830 /* Pods_AIGrammar_AIGrammarUITests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -36,6 +61,10 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 12CA1A1A0FE978794C445DBF /* Pods_AIGrammar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AIGrammar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 151748838A6B3B48F136656A /* Pods-AIGrammarTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIGrammarTests.release.xcconfig"; path = "Target Support Files/Pods-AIGrammarTests/Pods-AIGrammarTests.release.xcconfig"; sourceTree = ""; }; + 17A4761E5C3381A5C601C830 /* Pods_AIGrammar_AIGrammarUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AIGrammar_AIGrammarUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 26700CBCCF4198DB4A727889 /* Pods-AIGrammar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIGrammar.release.xcconfig"; path = "Target Support Files/Pods-AIGrammar/Pods-AIGrammar.release.xcconfig"; sourceTree = ""; }; 5500A38C2BB3C7E80065A1D3 /* AIGrammar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AIGrammar.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5500A38F2BB3C7E80065A1D3 /* AIGrammarApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AIGrammarApp.swift; sourceTree = ""; }; 5500A3912BB3C7E80065A1D3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; @@ -48,6 +77,33 @@ 5500A3AB2BB3C7EC0065A1D3 /* AIGrammarUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AIGrammarUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 5500A3AF2BB3C7EC0065A1D3 /* AIGrammarUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AIGrammarUITests.swift; sourceTree = ""; }; 5500A3B12BB3C7EC0065A1D3 /* AIGrammarUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AIGrammarUITestsLaunchTests.swift; sourceTree = ""; }; + 5500A3BF2BB40A3B0065A1D3 /* AllTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllTabView.swift; sourceTree = ""; }; + 5500A3C12BB40AB10065A1D3 /* GrammarCheckView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrammarCheckView.swift; sourceTree = ""; }; + 5500A3C32BB40AC40065A1D3 /* WordsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordsView.swift; sourceTree = ""; }; + 5500A3C52BB40AD30065A1D3 /* TranslateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranslateView.swift; sourceTree = ""; }; + 5500A3C72BB40ADE0065A1D3 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; + 5509CEED2BB526F70056C5C2 /* ColorToString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorToString.swift; sourceTree = ""; }; + 5509CEF02BB54DD10056C5C2 /* Config.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Config.swift; sourceTree = ""; }; + 550B85A12C2BC623008834E5 /* InitAPP.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitAPP.swift; sourceTree = ""; }; + 559E6D7B2C34EAE700C971B9 /* IapManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IapManager.swift; sourceTree = ""; }; + 559E6D7D2C35355200C971B9 /* LogManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogManager.swift; sourceTree = ""; }; + 55A954A12BBBFD0C00BF181E /* GrammarData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrammarData.swift; sourceTree = ""; }; + 55BB12782BBD4C9900D2BEA4 /* RichText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RichText.swift; sourceTree = ""; }; + 55BB127A2BBD653100D2BEA4 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = ""; }; + 55BB127C2BBD6D0600D2BEA4 /* CameraView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraView.swift; sourceTree = ""; }; + 55BC47482C3A383A00120A7D /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = ""; }; + 55BC47502C3D431300120A7D /* IAPView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IAPView.swift; sourceTree = ""; }; + 55C73D7E2C157C2200041C66 /* AIGrammar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AIGrammar.entitlements; sourceTree = ""; }; + 55D632F92C0F125D00443894 /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = ""; }; + 55DAC6542BBA959500BDD4C8 /* ResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResultView.swift; sourceTree = ""; }; + 55DAC6562BBA984B00BDD4C8 /* InputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputView.swift; sourceTree = ""; }; + 55EF5C3B2C2250900060CE47 /* IAPTestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IAPTestView.swift; sourceTree = ""; }; + 55EF5C3D2C2263460060CE47 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; + 5C33D84343808119C7E904A2 /* Pods-AIGrammarTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIGrammarTests.debug.xcconfig"; path = "Target Support Files/Pods-AIGrammarTests/Pods-AIGrammarTests.debug.xcconfig"; sourceTree = ""; }; + 7C535B875DDD6400217E60EC /* Pods-AIGrammar-AIGrammarUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIGrammar-AIGrammarUITests.debug.xcconfig"; path = "Target Support Files/Pods-AIGrammar-AIGrammarUITests/Pods-AIGrammar-AIGrammarUITests.debug.xcconfig"; sourceTree = ""; }; + 8AF5D0FA64AC9954B5F50C58 /* Pods-AIGrammar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIGrammar.debug.xcconfig"; path = "Target Support Files/Pods-AIGrammar/Pods-AIGrammar.debug.xcconfig"; sourceTree = ""; }; + C6DB81180B641DF0F1C587D7 /* Pods-AIGrammar-AIGrammarUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIGrammar-AIGrammarUITests.release.xcconfig"; path = "Target Support Files/Pods-AIGrammar-AIGrammarUITests/Pods-AIGrammar-AIGrammarUITests.release.xcconfig"; sourceTree = ""; }; + D848C5F909AA8F5965ADC982 /* Pods_AIGrammarTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AIGrammarTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -55,6 +111,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 55BC474F2C3A4E5E00120A7D /* ToastUI in Frameworks */, + 67F268687FCD2E4F2F4462C0 /* Pods_AIGrammar.framework in Frameworks */, + 55EF5C3E2C2263460060CE47 /* StoreKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -62,6 +121,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 74F2A468AB0CDAB987996958 /* Pods_AIGrammarTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -69,12 +129,24 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 9C67AFB08807D99E5D33962E /* Pods_AIGrammar_AIGrammarUITests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 40FEAE98949AC44A40547B20 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 55EF5C3D2C2263460060CE47 /* StoreKit.framework */, + 12CA1A1A0FE978794C445DBF /* Pods_AIGrammar.framework */, + 17A4761E5C3381A5C601C830 /* Pods_AIGrammar_AIGrammarUITests.framework */, + D848C5F909AA8F5965ADC982 /* Pods_AIGrammarTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 5500A3832BB3C7E80065A1D3 = { isa = PBXGroup; children = ( @@ -82,6 +154,8 @@ 5500A3A42BB3C7EC0065A1D3 /* AIGrammarTests */, 5500A3AE2BB3C7EC0065A1D3 /* AIGrammarUITests */, 5500A38D2BB3C7E80065A1D3 /* Products */, + B164443BE53434F82C385E52 /* Pods */, + 40FEAE98949AC44A40547B20 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +172,13 @@ 5500A38E2BB3C7E80065A1D3 /* AIGrammar */ = { isa = PBXGroup; children = ( + 55BC47472C3A380C00120A7D /* CommView */, + 55C73D7E2C157C2200041C66 /* AIGrammar.entitlements */, + 55DAC6532BBA956100BDD4C8 /* GrammarSubView */, + 5509CEEF2BB54DAB0056C5C2 /* ViewModel */, + 5509CEEC2BB5267F0056C5C2 /* lib */, + 5500A3BF2BB40A3B0065A1D3 /* AllTabView.swift */, + 5500A3BE2BB40A1F0065A1D3 /* View */, 5500A38F2BB3C7E80065A1D3 /* AIGrammarApp.swift */, 5500A3912BB3C7E80065A1D3 /* ContentView.swift */, 5500A3932BB3C7EB0065A1D3 /* Assets.xcassets */, @@ -133,6 +214,73 @@ path = AIGrammarUITests; sourceTree = ""; }; + 5500A3BE2BB40A1F0065A1D3 /* View */ = { + isa = PBXGroup; + children = ( + 5500A3C12BB40AB10065A1D3 /* GrammarCheckView.swift */, + 5500A3C32BB40AC40065A1D3 /* WordsView.swift */, + 5500A3C52BB40AD30065A1D3 /* TranslateView.swift */, + 5500A3C72BB40ADE0065A1D3 /* SettingsView.swift */, + 55BC47502C3D431300120A7D /* IAPView.swift */, + ); + path = View; + sourceTree = ""; + }; + 5509CEEC2BB5267F0056C5C2 /* lib */ = { + isa = PBXGroup; + children = ( + 550B85A12C2BC623008834E5 /* InitAPP.swift */, + 5509CEED2BB526F70056C5C2 /* ColorToString.swift */, + 55D632F92C0F125D00443894 /* NetworkManager.swift */, + 559E6D7B2C34EAE700C971B9 /* IapManager.swift */, + 559E6D7D2C35355200C971B9 /* LogManager.swift */, + ); + path = lib; + sourceTree = ""; + }; + 5509CEEF2BB54DAB0056C5C2 /* ViewModel */ = { + isa = PBXGroup; + children = ( + 5509CEF02BB54DD10056C5C2 /* Config.swift */, + 55A954A12BBBFD0C00BF181E /* GrammarData.swift */, + ); + path = ViewModel; + sourceTree = ""; + }; + 55BC47472C3A380C00120A7D /* CommView */ = { + isa = PBXGroup; + children = ( + 55BC47482C3A383A00120A7D /* LoadingView.swift */, + ); + path = CommView; + sourceTree = ""; + }; + 55DAC6532BBA956100BDD4C8 /* GrammarSubView */ = { + isa = PBXGroup; + children = ( + 55DAC6542BBA959500BDD4C8 /* ResultView.swift */, + 55DAC6562BBA984B00BDD4C8 /* InputView.swift */, + 55BB12782BBD4C9900D2BEA4 /* RichText.swift */, + 55BB127A2BBD653100D2BEA4 /* ShareSheet.swift */, + 55BB127C2BBD6D0600D2BEA4 /* CameraView.swift */, + 55EF5C3B2C2250900060CE47 /* IAPTestView.swift */, + ); + path = GrammarSubView; + sourceTree = ""; + }; + B164443BE53434F82C385E52 /* Pods */ = { + isa = PBXGroup; + children = ( + 8AF5D0FA64AC9954B5F50C58 /* Pods-AIGrammar.debug.xcconfig */, + 26700CBCCF4198DB4A727889 /* Pods-AIGrammar.release.xcconfig */, + 7C535B875DDD6400217E60EC /* Pods-AIGrammar-AIGrammarUITests.debug.xcconfig */, + C6DB81180B641DF0F1C587D7 /* Pods-AIGrammar-AIGrammarUITests.release.xcconfig */, + 5C33D84343808119C7E904A2 /* Pods-AIGrammarTests.debug.xcconfig */, + 151748838A6B3B48F136656A /* Pods-AIGrammarTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -140,15 +288,20 @@ isa = PBXNativeTarget; buildConfigurationList = 5500A3B52BB3C7EC0065A1D3 /* Build configuration list for PBXNativeTarget "AIGrammar" */; buildPhases = ( + 8B14D9249A058EC52D6F04F3 /* [CP] Check Pods Manifest.lock */, 5500A3882BB3C7E80065A1D3 /* Sources */, 5500A3892BB3C7E80065A1D3 /* Frameworks */, 5500A38A2BB3C7E80065A1D3 /* Resources */, + FF9E2F6B912125F8F338EE9E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = AIGrammar; + packageProductDependencies = ( + 55BC474E2C3A4E5E00120A7D /* ToastUI */, + ); productName = AIGrammar; productReference = 5500A38C2BB3C7E80065A1D3 /* AIGrammar.app */; productType = "com.apple.product-type.application"; @@ -157,6 +310,7 @@ isa = PBXNativeTarget; buildConfigurationList = 5500A3B82BB3C7EC0065A1D3 /* Build configuration list for PBXNativeTarget "AIGrammarTests" */; buildPhases = ( + 498A407B1B5D54884032EBE0 /* [CP] Check Pods Manifest.lock */, 5500A39D2BB3C7EC0065A1D3 /* Sources */, 5500A39E2BB3C7EC0065A1D3 /* Frameworks */, 5500A39F2BB3C7EC0065A1D3 /* Resources */, @@ -175,9 +329,11 @@ isa = PBXNativeTarget; buildConfigurationList = 5500A3BB2BB3C7EC0065A1D3 /* Build configuration list for PBXNativeTarget "AIGrammarUITests" */; buildPhases = ( + 122A24ED4A80683F7AD2CBF5 /* [CP] Check Pods Manifest.lock */, 5500A3A72BB3C7EC0065A1D3 /* Sources */, 5500A3A82BB3C7EC0065A1D3 /* Frameworks */, 5500A3A92BB3C7EC0065A1D3 /* Resources */, + 71E9C7A697AC9238D1513188 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -221,6 +377,9 @@ Base, ); mainGroup = 5500A3832BB3C7E80065A1D3; + packageReferences = ( + 55BC474D2C3A4E5E00120A7D /* XCRemoteSwiftPackageReference "ToastUI" */, + ); productRefGroup = 5500A38D2BB3C7E80065A1D3 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -258,15 +417,138 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 122A24ED4A80683F7AD2CBF5 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AIGrammar-AIGrammarUITests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + 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"; + showEnvVarsInLog = 0; + }; + 498A407B1B5D54884032EBE0 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AIGrammarTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + 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"; + showEnvVarsInLog = 0; + }; + 71E9C7A697AC9238D1513188 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AIGrammar-AIGrammarUITests/Pods-AIGrammar-AIGrammarUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AIGrammar-AIGrammarUITests/Pods-AIGrammar-AIGrammarUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AIGrammar-AIGrammarUITests/Pods-AIGrammar-AIGrammarUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8B14D9249A058EC52D6F04F3 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AIGrammar-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + 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"; + showEnvVarsInLog = 0; + }; + FF9E2F6B912125F8F338EE9E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AIGrammar/Pods-AIGrammar-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-AIGrammar/Pods-AIGrammar-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AIGrammar/Pods-AIGrammar-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 5500A3882BB3C7E80065A1D3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5500A3992BB3C7EB0065A1D3 /* Persistence.swift in Sources */, + 55DAC6572BBA984B00BDD4C8 /* InputView.swift in Sources */, + 55A954A22BBBFD0C00BF181E /* GrammarData.swift in Sources */, + 55BB12792BBD4C9900D2BEA4 /* RichText.swift in Sources */, + 5500A3C22BB40AB10065A1D3 /* GrammarCheckView.swift in Sources */, + 55BC47512C3D431300120A7D /* IAPView.swift in Sources */, + 550B85A22C2BC624008834E5 /* InitAPP.swift in Sources */, + 5500A3C42BB40AC40065A1D3 /* WordsView.swift in Sources */, + 5509CEF12BB54DD10056C5C2 /* Config.swift in Sources */, + 55BB127B2BBD653100D2BEA4 /* ShareSheet.swift in Sources */, + 5500A3C82BB40ADE0065A1D3 /* SettingsView.swift in Sources */, + 55DAC6552BBA959500BDD4C8 /* ResultView.swift in Sources */, + 5500A3C02BB40A3B0065A1D3 /* AllTabView.swift in Sources */, + 559E6D7E2C35355200C971B9 /* LogManager.swift in Sources */, + 55D632FA2C0F125D00443894 /* NetworkManager.swift in Sources */, 5500A3922BB3C7E80065A1D3 /* ContentView.swift in Sources */, + 55BB127D2BBD6D0600D2BEA4 /* CameraView.swift in Sources */, + 559E6D7C2C34EAE700C971B9 /* IapManager.swift in Sources */, + 55EF5C3C2C2250900060CE47 /* IAPTestView.swift in Sources */, 5500A3902BB3C7E80065A1D3 /* AIGrammarApp.swift in Sources */, 5500A39C2BB3C7EB0065A1D3 /* AIGrammar.xcdatamodeld in Sources */, + 5500A3C62BB40AD30065A1D3 /* TranslateView.swift in Sources */, + 5509CEEE2BB526F80056C5C2 /* ColorToString.swift in Sources */, + 55BC47492C3A383A00120A7D /* LoadingView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -329,7 +611,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -340,7 +622,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -392,7 +674,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -403,7 +685,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -424,26 +706,30 @@ }; 5500A3B62BB3C7EC0065A1D3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 8AF5D0FA64AC9954B5F50C58 /* Pods-AIGrammar.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = AIGrammar/AIGrammar.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"AIGrammar/Preview Content\""; DEVELOPMENT_TEAM = G8UMWM9TLL; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSCameraUsageDescription = "用户拍照获取文本"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.ostest.Grammar.AIGrammar; + PRODUCT_BUNDLE_IDENTIFIER = com.easyprompts.aigrammar; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -453,26 +739,30 @@ }; 5500A3B72BB3C7EC0065A1D3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 26700CBCCF4198DB4A727889 /* Pods-AIGrammar.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = AIGrammar/AIGrammar.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"AIGrammar/Preview Content\""; DEVELOPMENT_TEAM = G8UMWM9TLL; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSCameraUsageDescription = "用户拍照获取文本"; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.ostest.Grammar.AIGrammar; + PRODUCT_BUNDLE_IDENTIFIER = com.easyprompts.aigrammar; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -482,6 +772,7 @@ }; 5500A3B92BB3C7EC0065A1D3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5C33D84343808119C7E904A2 /* Pods-AIGrammarTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -502,6 +793,7 @@ }; 5500A3BA2BB3C7EC0065A1D3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 151748838A6B3B48F136656A /* Pods-AIGrammarTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -522,6 +814,7 @@ }; 5500A3BC2BB3C7EC0065A1D3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7C535B875DDD6400217E60EC /* Pods-AIGrammar-AIGrammarUITests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; @@ -540,6 +833,7 @@ }; 5500A3BD2BB3C7EC0065A1D3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C6DB81180B641DF0F1C587D7 /* Pods-AIGrammar-AIGrammarUITests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; @@ -597,6 +891,25 @@ }; /* End XCConfigurationList section */ +/* Begin XCRemoteSwiftPackageReference section */ + 55BC474D2C3A4E5E00120A7D /* XCRemoteSwiftPackageReference "ToastUI" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/quanshousio/ToastUI.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.1; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 55BC474E2C3A4E5E00120A7D /* ToastUI */ = { + isa = XCSwiftPackageProductDependency; + package = 55BC474D2C3A4E5E00120A7D /* XCRemoteSwiftPackageReference "ToastUI" */; + productName = ToastUI; + }; +/* End XCSwiftPackageProductDependency section */ + /* Begin XCVersionGroup section */ 5500A39A2BB3C7EB0065A1D3 /* AIGrammar.xcdatamodeld */ = { isa = XCVersionGroup; diff --git a/AIGrammar.xcodeproj/project.xcworkspace/contents.xcworkspacedata "b/\t\t.xcodeproj/project.xcworkspace/contents.xcworkspacedata" similarity index 100% rename from AIGrammar.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to "\t\t.xcodeproj/project.xcworkspace/contents.xcworkspacedata" diff --git a/AIGrammar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist "b/\t\t.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" similarity index 100% rename from AIGrammar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to "\t\t.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" diff --git "a/\t\t.xcodeproj/xcshareddata/xcschemes/AIGrammar.xcscheme" "b/\t\t.xcodeproj/xcshareddata/xcschemes/AIGrammar.xcscheme" new file mode 100644 index 0000000..db74c74 --- /dev/null +++ "b/\t\t.xcodeproj/xcshareddata/xcschemes/AIGrammar.xcscheme" @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/\t\t.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist" "b/\t\t.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..fbd38e8 --- /dev/null +++ "b/\t\t.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + AIGrammar.xcscheme_^#shared#^_ + + orderHint + 13 + + + SuppressBuildableAutocreation + + 5500A38B2BB3C7E80065A1D3 + + primary + + + 5500A3A02BB3C7EC0065A1D3 + + primary + + + 5500A3AA2BB3C7EC0065A1D3 + + primary + + + + + diff --git a/AIGrammar.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist b/AIGrammar/AIGrammar.entitlements similarity index 54% rename from AIGrammar.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist rename to AIGrammar/AIGrammar.entitlements index 7a55041..c6c92d9 100644 --- a/AIGrammar.xcodeproj/xcuserdata/oscar.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/AIGrammar/AIGrammar.entitlements @@ -2,13 +2,7 @@ - SchemeUserState - - AIGrammar.xcscheme_^#shared#^_ - - orderHint - 0 - - + com.apple.developer.in-app-payments + diff --git a/AIGrammar/AllTabView.swift b/AIGrammar/AllTabView.swift new file mode 100644 index 0000000..2115223 --- /dev/null +++ b/AIGrammar/AllTabView.swift @@ -0,0 +1,80 @@ +// +// AllTab.swift +// AIGrammar +// +// Created by oscar on 2024/3/27. +// + +import SwiftUI + +@main +struct LearningToolApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} + +struct ContentView: View { + var body: some View { + TabView { + GrammarCheckView() + .tabItem { + Image(systemName: "book.fill") + Text("Grammar Check") + } + + WordsView() + .tabItem { + Image(systemName: "text.bubble") + Text("Words") + } + + TranslateView() + .tabItem { + Image(systemName: "globe") + Text("Translate") + } + + SettingsView() + .tabItem { + Image(systemName: "gear") + Text("Settings") + } + } + } +} + +struct GrammarCheckView: View { + var body: some View { + // Your Grammar Check View content goes here. + Text("Grammar Check") + } +} + +struct WordsView: View { + var body: some View { + // Your Words View content goes here. + Text("Words") + } +} + +struct TranslateView: View { + var body: some View { + // Your Translate View content goes here. + Text("Translate") + } +} + +struct SettingsView: View { + var body: some View { + // Your Settings View content goes here. + Text("Settings") + } +} + + +#Preview { + AllTab() +} diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/Contents.json b/AIGrammar/Assets.xcassets/AppIcon.appiconset/Contents.json index 13613e3..c68df94 100644 --- a/AIGrammar/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/AIGrammar/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,13 +1,120 @@ { - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" + "images": [ + { + "size": "20x20", + "idiom": "universal", + "filename": "icon-20@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "20x20", + "idiom": "universal", + "filename": "icon-20@3x.png", + "scale": "3x", + "platform": "ios" + }, + { + "size": "29x29", + "idiom": "universal", + "filename": "icon-29@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "29x29", + "idiom": "universal", + "filename": "icon-29@3x.png", + "scale": "3x", + "platform": "ios" + }, + { + "size": "38x38", + "idiom": "universal", + "filename": "icon-38@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "38x38", + "idiom": "universal", + "filename": "icon-38@3x.png", + "scale": "3x", + "platform": "ios" + }, + { + "size": "40x40", + "idiom": "universal", + "filename": "icon-40@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "40x40", + "idiom": "universal", + "filename": "icon-40@3x.png", + "scale": "3x", + "platform": "ios" + }, + { + "size": "60x60", + "idiom": "universal", + "filename": "icon-60@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "60x60", + "idiom": "universal", + "filename": "icon-60@3x.png", + "scale": "3x", + "platform": "ios" + }, + { + "size": "64x64", + "idiom": "universal", + "filename": "icon-64@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "64x64", + "idiom": "universal", + "filename": "icon-64@3x.png", + "scale": "3x", + "platform": "ios" + }, + { + "size": "68x68", + "idiom": "universal", + "filename": "icon-68@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "76x76", + "idiom": "universal", + "filename": "icon-76@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "83.5x83.5", + "idiom": "universal", + "filename": "icon-83.5@2x.png", + "scale": "2x", + "platform": "ios" + }, + { + "size": "1024x1024", + "idiom": "universal", + "filename": "icon-1024.png", + "scale": "1x", + "platform": "ios" + } + ], + "info": { + "version": 1, + "author": "icon.wuruihong.com" } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} +} \ No newline at end of file diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..697f32732717ebb5ad44a32d825bf008d41211ca GIT binary patch literal 108933 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�>W{i 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 Z!t5oHU)d7${xM^M5qd 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 XA&#~+N5SiE00000NkvXXu0mjfb{?CM literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c3f939c22a1b3e78f50f78c97167a9b08096d1 GIT binary patch literal 3219 zcmV;E3~cj>P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..763a246f11468cbd72ce9d66268b1cd69bbcd502 GIT binary patch literal 8354 zcmV;TAYI>yP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..763a246f11468cbd72ce9d66268b1cd69bbcd502 GIT binary patch literal 8354 zcmV;TAYI>yP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..edfd7ab63512cb702cd1202f4b86725f301b0900 GIT binary patch literal 14293 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 literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..03c97ba49f7c1642b1d13c61a70f82f3967ed24e GIT binary patch literal 9041 zcmaJ{g;!MF*S;VzNF%~X4J9q1NW;L;NT&nR4T2!uNOws{cb6jFf=CJsT?5h}AT@OT z=KcPFZ{2nKti8@T_qlsN&)z3eT~(g&G1X%L009!m^f9 zkph5k@%Xo<*ywwDa|KNm0Pto(w+jJ)>;KyC0Dv1W0Q@xp0Ff^MKkVxhm)T3oOGIrx;u4atpgZj z^go2=xbTiZke0!;rNhpP4v(&ljwNR1Pb8S1G6RD#sBzb^j~v&Lzh=zfGj@uN0`}*{ zO(KW!sr~Ee2pa*#^NuVis=>RpvNE8nLaS6YTO?MTj`&)MMYSxlraQpnDk=~!wHEZn z^8GRUxmki_s67ig0g>sG>3H{Z%t>zc=~wsuAi$&dj6 zhym8U`%#!?^#0S2(VCpmH%Q$~&i3&o@8Vixa@k@?%-b&N{1{)p zUfxjb78mPjZbSYqdT3ffS!Qk|A1nGBbvt@Y<#su3%$4)(QQ_j$lEH%ZKJm$F*fk6# zoAGCA#^411$W!B^5=u1(XO!5&Ks+EZ9-%DNHsq>PD-KTW0<9`MX(M5R%j$Fu`@3HC zJ0tBcwVLHDR2vE}x3Ey}I_tK(DSa*=olA>6QD!^XCFJI^UbbGg&d#R(Myid278`F< zO~DzuTH0VHLO@25%=5?k84=vU;UJAFGh>e`!@CBBa~6-PpVHw>Tk#po){nJSkM%aC5y+f*{Ql}!B+#GHBpgv>4_VrbZFhOsbwsQr3aX4Pk`24iX zQS`ceT=w6Vi9Ks7^LKEKbJUZSOl>2o)X|MDVR{)*0dJ2`hMO68+lJ=d^acvZiu|JC5=n8BjxT@<$&*Nn-$X)e6-XUXiNpv*|(ewCW6hm7~Cv2TvyAH#*%9xH!o>@*R|!YR7!aL{63wRp=j0j)c(VLM|n%%hX+ebtE#IlL0xX+ zg4sRCB*ldJXcVZhHlmk%rbxfSt`@9Y_g^*1X8N`xSM^$)wpC_sZ;(BbM5 za`@rw+IJ{D230Rl*XnVV6iU#$BsPA7Z7%lVJSM3iXy#lsWIWA{(6OoCWV~OGYM{<% z8{^(poRRsLsFY3fj&8YYrJl*b(Gsr}W|r!#!QuPs?eno@)7XMC_^T4})1MbEb+10a zcJ2x$Z7D}{ku%PCfQU#N_rA}DD(bM#%{Usz&_+>j3 z`f!%5=6;|tZVk3Ve`{m!`@u{azYvmN%~mJO4N9RTn1TOtIGs)8ecOGu{qJ4PVLBKj zJoUm7*UIiK81!Lu-S|CinT`7k9crm~Foj-c;^n66&exSfskFwt>&e>Dq3c43O&G{< zcQ5|wYZ94@IKSJ$xz}pV6FP10LNEyW8M&rThj$rT3yf8HCeLnY=agj(LF z-rak2-NinA^Wme~hXj)Jfx0T1NsT7zBl{dJMQI2_2ww@`rrmqG4m!Z3VgBLdT(0tW z9EoP7_C=L`i}&=9LD>Q4nrq9QKm79`c+=3R_Hb(Jz%tgsm5aifzn}+<5wrXVFxg|x zHG1!$cb^UQmcv-vghLeqjDG4e7RBA0#6n{zh2Q>xW*PTz(%?}rTz|K0k2 zu)zw$vN%ntiFXK&L_GrNK{P?}K;8h>KnU89Vp0sr%VMzgjB3ZzOeoCe=&w5R^_`Z6 zQBvk-+H+Z;d+)U4ex^+nx>DNiR(4d^ex`Im)SmzxCjcN)ETZM@&*3+^MN)HnXN?~2 z?ERtGUT{VIey}x0;H&MwwM1}I7w!5jFt3?Nw=>kqx)Q=|3cChk#nvZ!ra^(pvia) z$&&&X2vsu*g$1rLG36%*uvRrm z3U#E_lrvjOVovt($mp!h{5Td&qJ8OUtixlFuxBnSmY<=sKl4+W$@(989xX^v{_;IK zWVJm30EUolY{(cfA^Zjh$3Y-`a+6Gkl&NacR+*iB9-iJJ4EN3!h$Php)K@$|ZF_|z z7?oD0i?Lr?|A_tDly@Es#^@RN*%OWbWu+34@BV?m1~)N5MLZjm!6RLBo)pJja$xJ! zd(#9(sI%!sToWe)^nXi#W~=9YLjrR+$W~2T1g|sV0GFQ2jvoB4n{v9wCuR`yi-LdL zeLQn0W%$$=C-|#Z=d$*zESp|jqT`vBmXanv9bjj>rylovE4gYUhMI%*xXd5_?=7bB z-XAc-D}1$4D^Q;FfrhL-e#rZS16_?v?m}5wG9_gaAx{Z%KSQ|2zegUE6k5!f{4{!S z4fn zKNZMT^|)cBs9RHKdT(_k#gsEI$PbDuM`iS``}P=1Wc+We)#c~F_F3faaH?MBgiTC1 z+VN`W8N*W_#>F3B+f2P)OcOh(gk(Ft}+ALy`QmaxP*73I2Aprlc7!3uwmlPB;V|n73S^Foly`LlpW;l@q zvPjcpbsmYsYn5I?5x** zB|TZd40kxkr(BGq5xufBd^EN)zM;dRW2EZtrXzcRV($yR5{5t9AJ|JnbF43~%@@WV zW^0!mF709JkS?UeE~XN34X zZ3?aey@l4;bKuLEZ69w&Y1yAupIvIgYXlM@3{M|}cKp-p@@uFK02robp_ijRnb1oc zgD6B9$sZ@7yJL3$!6AiQ(Kh!VOYqI&KDk1Mp|Gs9&&8`kO^d-KWLONxPuaqUi>rdl zwK=kNA0-iI;}>4^794I`N)G%?D7C6EmfEqPgy=vMHe<6LW>6!RVaeTmaAV!%hXFt3 z3gMk=1YS2-E%W77Db#=KtVtlJ%Spovl0!*uNXksppZb)t`f_2d<-6Ua=8JDs$+T&$ z+1zO-<0#Y=^IW0-2yagkWp*r;pVaw^o!LOxvkF1&r9@TZ5SIKhGez=G3A7z)mVujc zpI_F#(oWr!_?pr91$G!^XNqtB&hYgv8j}Aek+|;uolV;xKa{a5l}>Z(^KLhWy0EHo z2!c`0JC3k{oV)O+&wn}Z7oAM}tfmjk=lcanVwh$&G3`XeNWg5schoCmBi*gG$!cb5 z9;b=_Qe>JN{l8WoK9<&aL%@C=wA6lBmH&H{aL-1Mg6~&3#cA*bvcr4&p!y)2(qPet z+c=Rqy=2uI=~107A~ zP1}`d>&+HXHT5=5}s$FJyn0&Qka!rAZ45& zKfwoPdPKNaqQx;nyW8$a$-Z;5=%1&Yt>1BpxM9kRUyF-VeZ1p;e0Axuyr{Y2DRt#B z6JzUQHN%qc8(76ZsdY+-|FXUQv3xs8k6lhelbkJ$*sDwmjO_hZ3A%wKg^fS+@6I-c z(u_P=IA1Xh7!fB$jy+`<-Y9es_3#yF$4p7fyt^zUX6ZX4ERdf*T6LKB)!sS%$S*)C zuk}m>H34%sO|c>XjGlgwmY!IqxsX z({ZtLC^VY@h;Vdhi0c(9VDixZ{e+E61!4Et{Jq(qbm5V9%(wx~vaRxLfz42BK{Th4 z??&=GQ3Mz^297^>Jxpds^`;b*-OMgEI4$poRFB#F=bQ(BQ6R02Ryt+tnIJEu%Xu)5 z(S)DOX^V+x68(KQS)%(e91R`%Js4M4^F*;5v0iHIf2Pvb8%a{YYxM2?aZ}fsN`nZ( zNj|~T_1~i@y6Ja<-oMx7Aq+C0IWf%OpKh;q7Q{x!ek5m9pKSSC@u2WDw1gO7 z`O`EORoZ&_>{UtEQQ?{JJUo9aO8pXxgnroKqBA()eou79o?3rn#*zuFpiWnR5NX8wu^EXAKAOc2lu62jK;WA8tN@>x5HEp6}U8>yHQb z(BTd?|C(z>=3EE_w0rHjL&lgwrZ}b@qPN6b{vl)#dbc-c5W-q6xn?ekOxB<+JaU1i zg*wk_4&V+n9{!R~6^qTM)~dsJGxVk z23_k#riX8K$&>7VK^tv!lO(HkKgXLwWua{obryzLsKN~s0zCDP$p;G^hX)?ZdW?@q zVd>9y)oOe!&^|ZP@xw`c>jAFW*`a&_wVWXUSe%0XeRT*JB-Rc?b(dn%h1|=of=uA< z1b8G^t9LIJ1^mBG=gJk-Hy^c>&gkf*vi`Gq1ebKvSiJdWkY)4sFkC8kkn1~_VeLdI zj>PjLdL^Q_sg__XWe^ZpDLo^2@3Q{SFTA!Iq={DM@4C)S`=BW{yS)Nxt`5+D^Qi_$ zAO;F+qXx_41)K4BWuV`gpf_d^3;<~D8sK?Qjn4XL!)mAO&S;H|&pQs6bDLX)tGxa~ zqdr<9C=1gF4QIv7K-Uq!b1aNdUxs)Kem{xud5f8Bj_tR(!i;8n;%PnsSDDb9F5WDd zY~}P4S|Z?fx(Pl>$Y;EtND&%64<2j~Dx4JCOtqwDjBib}RS#Kj?jBFDAd>{4`PuCj zacz^ED~Gk_i>=b!%ljU$?@4u~Zdv?lm-D)@n~nYJa!~bCEbJ}jSill8gO<$*=W+w# z&zae0Xtd9&Rw~LlJqqNKsr5onc;V{hU80r2=aFbg^!rovOpD8bZ276;@Qtihh%f*& z6Fffby1(oGa}*Z0)^iJiw&m9qa0&Ol5vz#rTZ@rCB>~lX)v*-&9}Mm+`j0!SFA`75 zYJ{@LMfz*G>^@?)eIpah0$`)R< z|IS<{8%9V1ZSDcG<1j(fRlj0$zH~N)f|BKV#^Z>X|NOJGd3{|3qfJhX=5Ugmq6`Ga zfh*|P5FHKxLI$&!X#bK-$V=1zpI-8Ot9t`o zv%Oh~DmA(L5_=cq9T;QnZPBDzHO`WetHX0vyq$QV#R>(d#;1bUd`~1n?-$xt;L8QJ z*Pnd4;M!oFf3+GiCu=jb14iNaADyExz7c3nf|$6Jey+>To$6El^jr6$&t#PkxTGh{#OmpH+LX~65H=RCa>IV6mC}lG|r~NNq`tYT?z@- zylf(T%cW`MP1VbLul7EM`1%{EBxwG4m(J2JF@M)bZ{?ZC^(OVW$E^8>M3e6EPYo|;#t4s-xe`X;hQ&5{2pz)#c@ki!&A2QUxUjo=3@9_;Qx zguK`I`@f;d2Rbi2nk)K>hc(kO{hKrt=f9DzC#@a+1oLDGhN}n_;SQ<}dEtBl-|GQR zt!C3Vt^@Bm$?qsQy_-lEnKMjDNfIpPa~m*$cB7TPnZ}vMI0sQ^uBM?^|7@C$3WwfE zyUhL_eWb9TIQ`VbOnwn9!s*@GZwSCPE6hw7mvtUUA1?^@i;-UtqbdF^U7Uv4#LqR# zDM8q1b3|=pXCj@8n-0zF<a8FUX%G%Id$y|7 zHAmepD{L`Ei&$>rGR(DCkQe;7$QVKb%To35*)D!kI+i1JX6Z5ZR3nK5lTmv8YAbc- zJnCe^=diQTU7zrmkP@me5&R3dXb`fi)|F-zImO%;j+csX#gi?M!mqb2Cs)zZr!Y3q zDG}1$hdfp`rK|2sH?%aWQ>EpOdtzRtS+1!`Fj=CUqp9V#BJPp%p|$yLQk-x*)6h{6 zI0{nN3%J+R8|%75h5jA<95hZTi&#IlY0%Fo2_7eY*en9B&FQ-#iVR1X%wH7X?xvlb zC(ps==wbr3*hC;3j$OVJAEDW$O@-xN;kOGum|U>wXw|~5RwYlP`~Ict7-hezx0q2# z_xdrI;Cj6A@MDXwL~j2&T1-|>f25&|^=AobM*af}*jbkl&n~ZibTjTG>pFY_oFWz6 z``tJd1WI!QckXVs-kMP*n`e|%vZSP>kS}}P)S{&L{n8 zp+u5(qVh24)RvSI|MXgeow=3dGrkcwv~Kf)4^FCWluy^s(@3~54A+s%Mi$rzWEyg( zP42q3Asw4C*M&NaAmCt{5PyPP-XCB!4xZnmBibAngEdGuLKS9-8@-S8&b&F)q?qXg zM3hugr_H`U_HdQu$}M-j-GEkveKTg%EdIh$%b-_MY_{^V=o(YFxVl2v5Et`#Q&h|MPh*H}HibCmJ*jq2&X}0Y%+? zk?2I4P3hphyaMgra&0-P(ZLeU-+73+_5uSe8DQW2Avk>`YHCxhG8Q3+_!ZUp(uJtb zeafx@4K+3n*F`mxMZLNX!?d>^ikOnd4}Z`(`@18=`lrZMZ4M47Pg7NMSuW;BP_zzIBeO!_$`aQ=HEI(^HMLHjG0|m zX=!P6HLPSgL1)OZX}B&c!@Jji@oNUFKW1{Px7hO7Io<8{xmsHr53b*Y;gv``+MDdT zarN>N^w!1b7HTXX|HEFmn%3B>OyrbAkEM2)lgQj7AG>8qA=38k?H7^fqDN~*dGRDk zmh%Vh)C4%8G4w>dzmk~QU0Q7r@$taJ4eE@TPRQ4F-X`-n8a<&}=GW*Pq)g0w3eCv1muldGyWS>QY!w@z?9jcYH zw&)6BJ4VTMV9G-ibe2|JP=WFK43JEX>}NeEY^`#yrK#ikMHQ_{Sq;HQVMwO$QN_w( z`&CX4)x9S}$gijJ4D6ldNEkpu&hla(kiYOtM~Oq@D5A2NqUw74hzVN4tLQWcXgBz* zIRu}swGb`TE8eTn!iaxr@mw=XhnG+fM1UV+YX}m6md{ak6x+ zt*9|x+xU7*ZWq6yP2&y^lC?-DDX^g3r%k>`{pcgSNYhIT`534ZllYp#W+Wv>fD?3G zRCw6rb$xxk1M*KOBe7V|kmf-c}TZ&Y+Aj>##9v|vDF*?;E z)_%7hsL3ZXqy95}2y7@&Jj2GMn^31paUDWZIUPl!Ieu~F8$#08cj(?WIWYka`}UTL zT=qGsA3u>e5J&*89{TxZ;HAv1(rkjE=U#5MT7b3p*#;GNaR_2t(=Jx?fxh{3v;-`o zfUUy_9gENalPml-|6ad(#)kiKkV%8SSB~Dbl+CFU*4;5ZV9qi9K2?^KKB+@Z<8A5W zXqM4;Pel9Rq`k5geoqCxA;0?$XTh``Da^eMxp#)H?)Txue(i@kqx!>vcAM2D4?&0B zy)LTj%BTV^ipk`^iuhZI+!{-N?PsSVXH}yAbZJ>0CdPFw<>81_8_x3H zJ$$1eo<+>h&zEfO76Do?zGCn3N2&|m&V_bZagECh1`vZp&v9}hO)@{y2-=kde$5NH z7a3}GY~Lx&%nek>v%6=@+L98ql8+L@j^r|rl4zCHNnj*3iA`W&VR>ecLZ~c1V%&p} zt70>R@KdRT5VOeftOrW8ZhA|W-Af5hBqTT1nurjgt+nI+WF9J`Zai2IG|ADxHjbv( zTNApI(lh@g(dvc=!gggw-ATp_eS%bVU*1VpeUAIT$4TAq>X`-=Xs~{4#IF#Citg?d zK2Tw?!M_F@Nl;ZuKQB87CksqMcWV=8bzIN_?#|o+u}=s7xVHt5L)sc^2Oe-=Gpgk& UU_Z%4ub}`GWmRQrU?xHT17a+yF#rGn literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..738f7553ac89e2aec0124fe604ba19c13ac3e04c GIT binary patch literal 15781 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 JQ6^>_{D0(;+4%qf literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f19903a7921c58cabf8f52d292bda426d13be0 GIT binary patch literal 9642 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 yD)jHL%n)~KMg!A?4Txm` literal 0 HcmV?d00001 diff --git a/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png b/AIGrammar/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e5dd69b33158105e78a2b8838a762d29d351681c GIT binary patch literal 11343 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%0A(yA(svInol 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 C6>|ju literal 0 HcmV?d00001 diff --git a/AIGrammar/CommView/LoadingView.swift b/AIGrammar/CommView/LoadingView.swift new file mode 100644 index 0000000..46636d6 --- /dev/null +++ b/AIGrammar/CommView/LoadingView.swift @@ -0,0 +1,18 @@ +// +// LoadingView.swift +// AIGrammar +// +// Created by oscar on 2024/7/7. +// + +import SwiftUI + +struct LoadingView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + LoadingView() +} diff --git a/AIGrammar/GrammarSubView/CameraView.swift b/AIGrammar/GrammarSubView/CameraView.swift new file mode 100644 index 0000000..8e59d0a --- /dev/null +++ b/AIGrammar/GrammarSubView/CameraView.swift @@ -0,0 +1,18 @@ +// +// CameraView.swift +// AIGrammar +// +// Created by oscar on 2024/4/3. +// + +import SwiftUI + +struct CameraView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + CameraView() +} diff --git a/AIGrammar/GrammarSubView/IAPTestView.swift b/AIGrammar/GrammarSubView/IAPTestView.swift new file mode 100644 index 0000000..112384c --- /dev/null +++ b/AIGrammar/GrammarSubView/IAPTestView.swift @@ -0,0 +1,18 @@ +// +// IAPTestView.swift +// AIGrammar +// +// Created by oscar on 2024/6/19. +// + +import SwiftUI + +struct IAPTestView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + IAPTestView() +} diff --git a/AIGrammar/GrammarSubView/InputView.swift b/AIGrammar/GrammarSubView/InputView.swift new file mode 100644 index 0000000..693f8d7 --- /dev/null +++ b/AIGrammar/GrammarSubView/InputView.swift @@ -0,0 +1,18 @@ +// +// InputView.swift +// AIGrammar +// +// Created by oscar on 2024/4/1. +// + +import SwiftUI + +struct InputView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + InputView() +} diff --git a/AIGrammar/GrammarSubView/ResultView.swift b/AIGrammar/GrammarSubView/ResultView.swift new file mode 100644 index 0000000..42d86d3 --- /dev/null +++ b/AIGrammar/GrammarSubView/ResultView.swift @@ -0,0 +1,18 @@ +// +// ResultView.swift +// AIGrammar +// +// Created by oscar on 2024/4/1. +// + +import SwiftUI + +struct ResultView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + ResultView() +} diff --git a/AIGrammar/GrammarSubView/RichText.swift b/AIGrammar/GrammarSubView/RichText.swift new file mode 100644 index 0000000..d5fbd20 --- /dev/null +++ b/AIGrammar/GrammarSubView/RichText.swift @@ -0,0 +1,18 @@ +// +// RichText.swift +// AIGrammar +// +// Created by oscar on 2024/4/3. +// + +import SwiftUI + +struct RichText: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + RichText() +} diff --git a/AIGrammar/GrammarSubView/ShareSheet.swift b/AIGrammar/GrammarSubView/ShareSheet.swift new file mode 100644 index 0000000..de56b03 --- /dev/null +++ b/AIGrammar/GrammarSubView/ShareSheet.swift @@ -0,0 +1,18 @@ +// +// ShareSheet.swift +// AIGrammar +// +// Created by oscar on 2024/4/3. +// + +import SwiftUI + +struct ShareSheet: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + ShareSheet() +} diff --git a/AIGrammar/View/GrammarCheckView.swift b/AIGrammar/View/GrammarCheckView.swift new file mode 100644 index 0000000..1a58fc8 --- /dev/null +++ b/AIGrammar/View/GrammarCheckView.swift @@ -0,0 +1,18 @@ +// +// GrammarCheckView.swift +// AIGrammar +// +// Created by oscar on 2024/3/27. +// + +import SwiftUI + +struct GrammarCheckView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + GrammarCheckView() +} diff --git a/AIGrammar/View/IAPView.swift b/AIGrammar/View/IAPView.swift new file mode 100644 index 0000000..15609a6 --- /dev/null +++ b/AIGrammar/View/IAPView.swift @@ -0,0 +1,18 @@ +// +// IAPView.swift +// AIGrammar +// +// Created by oscar on 2024/7/9. +// + +import SwiftUI + +struct IAPView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + IAPView() +} diff --git a/AIGrammar/View/SettingsView.swift b/AIGrammar/View/SettingsView.swift new file mode 100644 index 0000000..2bfcd6a --- /dev/null +++ b/AIGrammar/View/SettingsView.swift @@ -0,0 +1,18 @@ +// +// SettingsView.swift +// AIGrammar +// +// Created by oscar on 2024/3/27. +// + +import SwiftUI + +struct SettingsView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + SettingsView() +} diff --git a/AIGrammar/View/TranslateView.swift b/AIGrammar/View/TranslateView.swift new file mode 100644 index 0000000..b2aadaf --- /dev/null +++ b/AIGrammar/View/TranslateView.swift @@ -0,0 +1,18 @@ +// +// TranslateView.swift +// AIGrammar +// +// Created by oscar on 2024/3/27. +// + +import SwiftUI + +struct TranslateView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + TranslateView() +} diff --git a/AIGrammar/View/WordsView.swift b/AIGrammar/View/WordsView.swift new file mode 100644 index 0000000..f83f4a4 --- /dev/null +++ b/AIGrammar/View/WordsView.swift @@ -0,0 +1,18 @@ +// +// WordsView.swift +// AIGrammar +// +// Created by oscar on 2024/3/27. +// + +import SwiftUI + +struct WordsView: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +#Preview { + WordsView() +} diff --git a/AIGrammar/ViewModel/Config.swift b/AIGrammar/ViewModel/Config.swift new file mode 100644 index 0000000..f29b2d0 --- /dev/null +++ b/AIGrammar/ViewModel/Config.swift @@ -0,0 +1,8 @@ +// +// config.swift +// AIGrammar +// +// Created by oscar on 2024/3/28. +// + +import Foundation diff --git a/AIGrammar/ViewModel/GrammarData.swift b/AIGrammar/ViewModel/GrammarData.swift new file mode 100644 index 0000000..591bca5 --- /dev/null +++ b/AIGrammar/ViewModel/GrammarData.swift @@ -0,0 +1,22 @@ +// +// DemoData.swift +// AIGrammar +// +// Created by oscar on 2024/4/2. +// + +import Foundation + +struct GrammarRes { + var tPlain : String + var tType : String + var tReason : String + var tCorrection : [String] +} + +struct GrammarData { + var tInputText : String + var tCorrectText : String + var tResult : [GrammarRes] +} + diff --git a/AIGrammar/lib/ColorToString.swift b/AIGrammar/lib/ColorToString.swift new file mode 100644 index 0000000..a6070d6 --- /dev/null +++ b/AIGrammar/lib/ColorToString.swift @@ -0,0 +1,8 @@ +// +// ColorToString.swift +// AIGrammar +// +// Created by oscar on 2024/3/28. +// + +import Foundation diff --git a/AIGrammar/lib/CommFunc.swift b/AIGrammar/lib/CommFunc.swift new file mode 100644 index 0000000..3115377 --- /dev/null +++ b/AIGrammar/lib/CommFunc.swift @@ -0,0 +1,8 @@ +// +// CommFunc.swift +// AIGrammar +// +// Created by oscar on 2024/8/5. +// + +import Foundation diff --git a/AIGrammar/lib/IapManager.swift b/AIGrammar/lib/IapManager.swift new file mode 100644 index 0000000..c308a8e --- /dev/null +++ b/AIGrammar/lib/IapManager.swift @@ -0,0 +1,8 @@ +// +// Iap.swift +// AIGrammar +// +// Created by oscar on 2024/7/3. +// + +import Foundation diff --git a/AIGrammar/lib/InitAPP.swift b/AIGrammar/lib/InitAPP.swift new file mode 100644 index 0000000..04161a6 --- /dev/null +++ b/AIGrammar/lib/InitAPP.swift @@ -0,0 +1,10 @@ +// +// InitAPP.swift +// AIGrammar +// +// Created by oscar on 2024/6/26. +// + +import Foundation + + diff --git a/AIGrammar/lib/LogManager.swift b/AIGrammar/lib/LogManager.swift new file mode 100644 index 0000000..3fb527a --- /dev/null +++ b/AIGrammar/lib/LogManager.swift @@ -0,0 +1,8 @@ +// +// LogManager.swift +// AIGrammar +// +// Created by oscar on 2024/7/3. +// + +import Foundation diff --git a/AIGrammar/lib/NetworkManager.swift b/AIGrammar/lib/NetworkManager.swift new file mode 100644 index 0000000..a73c3be --- /dev/null +++ b/AIGrammar/lib/NetworkManager.swift @@ -0,0 +1,233 @@ +// +// request.swift +// AIGrammar +// +// Created by oscar on 2024/6/4. +// + +import Foundation +import Alamofire +import SwiftJWT +import SwiftyBeaver + +struct MyClaims: Claims { + var deviceID: String + var gid: Int + var exp1: Int +} + +struct APIResponse: Decodable { + let ret: Int + let message: String + let data: T? +} + +struct Translation: Identifiable, Codable, Equatable { + var id = UUID() + var input: String + var translation: String +} + +struct TranslationResponse: Codable { + let translation: String +} + +struct WordDetails { + var word: String = "" + var explanations: [String] = [] + var phrases: [String] = [] + var synonyms: [String] = [] +} + +struct WordDetailsResponse: Codable { + let word: String + let explain: [String]? + let phrase: [String]? + let sync: [String]? + + // Mapping to WordDetails for use in UI + func toWordDetails() -> WordDetails { + return WordDetails( + word: word, + explanations: explain ?? [], + phrases: phrase ?? [], + synonyms: sync ?? [] + ) + } +} + +struct VIPStatusResponse: Codable { + let id: Int + let userid: String + let username: String + let vip: Int +} + + +struct NetworkManager { + static let shared = NetworkManager() + private let jwtSecret = globalEnvironment.jwtSecret + + // 语法检查功能 + func checkGrammar(inputText: String, completion: @escaping ([GrammarRes]?, Error?) -> Void) { + let url = globalEnvironment.grammarURL + let headers: HTTPHeaders = createAuthorizationHeader() + + let parameters: [String: Any] = [ + "input": inputText, + "lang": "eng" + ] + AF.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: headers) + .responseDecodable(of: [GrammarRes].self) { response in + switch response.result { + case .success(let results): + completion(results, nil) + case .failure(let error): + completion(nil, error) + } + } + } + + // 单词的词典功能 + func fetchWordDetails(inputText: String, lang: String = "eng", completion: @escaping (Result) -> Void) { + + guard !inputText.isEmpty else { return } + let parameters: [String: Any] = ["input": inputText, "lang": lang] + let url = globalEnvironment.dictURL + let headers: HTTPHeaders = createAuthorizationHeader() + + AF.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: headers) + .responseDecodable(of: WordDetailsResponse.self) { response in + switch response.result { + case .success(let detailsResponse): + print("Success: Received data for \(detailsResponse.word)") + let details = detailsResponse.toWordDetails() // Convert here + completion(.success(details)) + case .failure(let error): + print("Error: \(error)") + print("Response Data: \(String(data: response.data ?? Data(), encoding: .utf8) ?? "No data")") + + completion(.failure(error)) + } + } + } + + // 翻译功能 + func translate(inputText: String, lang: String = "chs", completion: @escaping (Result) -> Void) { + + guard !inputText.isEmpty else { return } + let url = globalEnvironment.translateURL + let parameters: [String: Any] = ["input": inputText, "lang": lang] + let headers: HTTPHeaders = createAuthorizationHeader() + + AF.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: headers) + .responseDecodable(of: TranslationResponse.self) { response in + switch response.result { + case .success(let translationResponse): + let newTranslation = Translation(input: inputText, translation: translationResponse.translation) + completion(.success(newTranslation)) + case .failure(let error): + completion(.failure(error)) + } + } + } + + // 翻译的点赞、点踩功能 + func sendFeedback(input: String, output: String, isPositive: Bool) { + let url = globalEnvironment.feedbackURL + let parameters: [String: Any] = [ + "product": "trans", + "input": input, + "output": output, + "res": isPositive ? "good" : "bad" + ] + + let headers: HTTPHeaders = createAuthorizationHeader() + AF.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: headers).response { response in + switch response.result { + case .success(let data): + print("Feedback sent successfully: \(String(describing: data))") + case .failure(let error): + print("Error sending feedback: \(error)") + } + } + + } + + // 查询VIP状态 + func getUserProfile(completion: @escaping (Result) -> Void) { + let url = globalEnvironment.userURL + + let parameters: [String: Any] = [:] + let headers: HTTPHeaders = createAuthorizationHeader() + + performRequest( + endpoint: url, + parameters: parameters, + method: .post, + encoding: URLEncoding.httpBody, + headers: headers, // 示例:使用JWT token + completion: { (result: Result) in + switch result { + case .success(let vipData): + logger.info("VIP Status: \(vipData.vip)") + completion(.success(vipData)) + case .failure(let error): + logger.error("Error: \(error.localizedDescription)") + completion(.failure(error)) + } + } + ) + + } + + func performRequest( + endpoint: String, + parameters: Parameters, // 明确使用 Alamofire 的 Parameters 类型 + method: HTTPMethod = .post, + encoding: URLEncoding = .httpBody, + headers: HTTPHeaders? = nil, + completion: @escaping (Result) -> Void + ) { + let url = endpoint + let defaultHeaders: HTTPHeaders = [.contentType("application/x-www-form-urlencoded")] + let combinedHeaders = headers ?? defaultHeaders + + // 确保参数是正确的类型 + AF.request(url, method: .post, parameters: parameters, encoding: encoding, headers: combinedHeaders).responseDecodable(of: APIResponse.self) { response in + switch response.result { + case .success(let apiResponse): + if apiResponse.ret == 0, let data = apiResponse.data { + completion(.success(data)) + } else { + let error = NSError(domain: "", code: apiResponse.ret, userInfo: [NSLocalizedDescriptionKey: apiResponse.message]) + completion(.failure(error)) + } + case .failure(let error): + completion(.failure(error)) + } + } + } + + private func createAuthorizationHeader() -> HTTPHeaders { + // Generate JWT and return headers + guard let jwtToken = generateJWT(deviceID: globalEnvironment.deviceID, gID: globalEnvironment.GID, jwtSecret: jwtSecret) else { + return [:] + } + return ["Authorization": "Bearer \(jwtToken)"] + } + + private func generateJWT(deviceID: String, gID: Int, jwtSecret: String) -> String? { + let claims = MyClaims(deviceID: deviceID, gid: gID, exp1: Int(Date().timeIntervalSince1970) + 86400) + var jwt = JWT(claims: claims) + do { + let jwtSigner = JWTSigner.hs256(key: Data(jwtSecret.utf8)) + let signedJWT = try jwt.sign(using: jwtSigner) + return signedJWT + } catch { + logger.error("JWT encoding failed with error: \(error)") + return nil + } + } +} +