Skip to content
This repository was archived by the owner on Aug 18, 2023. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Work done with Mark Powell: added App Group, encoded categories into …
…a JSON file and stored in App Group, starting to decode into widget but realized we need a new model that's not dependent on Amplify, since that will go away.
  • Loading branch information
SuzGupta committed Nov 2, 2022
commit c03a0a03b4e09604923dc3fb48c72b1275f4a86f
17 changes: 16 additions & 1 deletion BrainMarksWidgets/BrainMarksWidgets.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,22 @@ struct Provider: TimelineProvider {
}

struct SimpleEntry: TimelineEntry {
let date: Date
let date: Date
func readContainer() {
guard let URL = FileManager.default.containerURL(
forSecurityApplicationGroupIdentifier: "group.com.suzgupta.brainmarks"
) else {
return
}
let decoder = JSONDecoder()
if let codeData = try? Data(contentsOf: URL) {
do {
contents = try decoder.decode([AWSCategory].self, from: codeData)
} catch {
print("Error: Can't decode contents")
}
}
}
}

struct BrainMarksCreateCategoryEntryView : View {
Expand Down
40 changes: 24 additions & 16 deletions brain-marks.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
2A7C408628EFCC3600F73DF5 /* BrainMarksWidgets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7C408528EFCC3600F73DF5 /* BrainMarksWidgets.swift */; };
2A7C408828EFCC3700F73DF5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2A7C408728EFCC3700F73DF5 /* Assets.xcassets */; };
2A7C408C28EFCC3700F73DF5 /* BrainMarksWidgetsExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 2A7C407E28EFCC3600F73DF5 /* BrainMarksWidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
2AA58B622912E6A900BF551D /* AWSCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D0518628EF45A382F08352 /* AWSCategory.swift */; };
2AA58B632912E6D300BF551D /* AWSTweet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AA54EDF3B34443CA9D530E5 /* AWSTweet.swift */; };
45B4425428EF5AC800FB0B27 /* AppIconSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45B4425328EF5AC800FB0B27 /* AppIconSettings.swift */; };
45B4426628EF5EA300FB0B27 /* 8 Rainbow.png in Resources */ = {isa = PBXBuildFile; fileRef = 45B4425628EF5EA300FB0B27 /* 8 Rainbow.png */; };
45B4426828EF5EA300FB0B27 /* 4 Beach.png in Resources */ = {isa = PBXBuildFile; fileRef = 45B4425828EF5EA300FB0B27 /* 4 Beach.png */; };
Expand Down Expand Up @@ -132,6 +134,7 @@
2A7C408528EFCC3600F73DF5 /* BrainMarksWidgets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrainMarksWidgets.swift; sourceTree = "<group>"; };
2A7C408728EFCC3700F73DF5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
2A7C408928EFCC3700F73DF5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
2AE728C32912DB6900785853 /* brain-marks.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "brain-marks.entitlements"; sourceTree = "<group>"; };
45B4425328EF5AC800FB0B27 /* AppIconSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconSettings.swift; sourceTree = "<group>"; };
45B4425628EF5EA300FB0B27 /* 8 Rainbow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "8 Rainbow.png"; sourceTree = "<group>"; };
45B4425828EF5EA300FB0B27 /* 4 Beach.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "4 Beach.png"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -485,6 +488,7 @@
FFEBBB3826223F75000F475F /* brain-marks */ = {
isa = PBXGroup;
children = (
2AE728C32912DB6900785853 /* brain-marks.entitlements */,
FF3942FF262E847000A3623B /* Add */,
FF39430E262E863000A3623B /* AmplifyModelExtensions */,
FF39432A262FD05700A3623B /* Categories */,
Expand Down Expand Up @@ -747,7 +751,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2AA58B632912E6D300BF551D /* AWSTweet.swift in Sources */,
2A7C408628EFCC3600F73DF5 /* BrainMarksWidgets.swift in Sources */,
2AA58B622912E6A900BF551D /* AWSCategory.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -868,7 +874,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BrainMarksWidgets/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = BrainMarksWidgets;
Expand All @@ -880,7 +886,7 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.mikaelacaron.brainmarks.BrainMarksWidgets;
PRODUCT_BUNDLE_IDENTIFIER = com.suzgupta.brainmarks.BrainMarksWidgets;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
Expand All @@ -897,7 +903,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BrainMarksWidgets/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = BrainMarksWidgets;
Expand All @@ -909,7 +915,7 @@
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.mikaelacaron.brainmarks.BrainMarksWidgets;
PRODUCT_BUNDLE_IDENTIFIER = com.suzgupta.brainmarks.BrainMarksWidgets;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
Expand Down Expand Up @@ -1044,9 +1050,10 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = "brain-marks/brain-marks.entitlements";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "\"brain-marks/Preview Content\"";
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = "brain-marks/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
Expand All @@ -1055,7 +1062,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.mikaelacaron.brainmarks;
PRODUCT_BUNDLE_IDENTIFIER = com.suzgupta.brainmarks;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -1068,9 +1075,10 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = "brain-marks/brain-marks.entitlements";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "\"brain-marks/Preview Content\"";
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = "brain-marks/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
Expand All @@ -1079,7 +1087,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.mikaelacaron.brainmarks;
PRODUCT_BUNDLE_IDENTIFIER = com.suzgupta.brainmarks;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
Expand All @@ -1093,15 +1101,15 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
INFOPLIST_FILE = "brain-marksTests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.mikaelacaron.brain-marksTests";
PRODUCT_BUNDLE_IDENTIFIER = "com.suzgupta.brain-marksTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -1115,15 +1123,15 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
INFOPLIST_FILE = "brain-marksTests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.mikaelacaron.brain-marksTests";
PRODUCT_BUNDLE_IDENTIFIER = "com.suzgupta.brain-marksTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -1136,14 +1144,14 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
INFOPLIST_FILE = "brain-marksUITests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.mikaelacaron.brain-marksUITests";
PRODUCT_BUNDLE_IDENTIFIER = "com.suzgupta.brain-marksUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand All @@ -1156,14 +1164,14 @@
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = Y535846H6P;
DEVELOPMENT_TEAM = N76WE33BQK;
INFOPLIST_FILE = "brain-marksUITests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.mikaelacaron.brain-marksUITests";
PRODUCT_BUNDLE_IDENTIFIER = "com.suzgupta.brain-marksUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand Down
23 changes: 23 additions & 0 deletions brain-marks/Categories/CategoryListViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,27 @@ final class CategoryListViewModel: ObservableObject {
init() {
getCategoryOrder()
}

func writeToContainer() {
guard let URL = FileManager.default.containerURL(
forSecurityApplicationGroupIdentifier: "group.com.suzgupta.brainmarks"
) else {
return
}
let widgetContents = categories
let archiveURL = URL
.appendingPathComponent("categories.json")
print(">>> \(archiveURL)")
let encoder = JSONEncoder()
if let dataToSave = try? encoder.encode(widgetContents) {
do {
try dataToSave.write(to: archiveURL)
} catch {
print("Error: Can't write contents")
return
}
}
}

func getCategories() {
categories = []
Expand All @@ -26,7 +47,9 @@ final class CategoryListViewModel: ObservableObject {
case .success(let categories):
DispatchQueue.main.async {
self.categories = self.sortCategories(categories)
self.writeToContainer()
}

case .failure(let error):
Logger.dataStore.error("Error fetching categories: \(error)")
}
Expand Down
10 changes: 10 additions & 0 deletions brain-marks/brain-marks.entitlements
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.suzgupta.brainmarks</string>
</array>
</dict>
</plist>