Page MenuHomeMusing Studio

No OneTemporary

diff --git a/.swiftlint.yml b/.swiftlint.yml
index 6931ea5..921d334 100644
--- a/.swiftlint.yml
+++ b/.swiftlint.yml
@@ -1,2 +1,4 @@
type_name:
- allowed_symbols: ["_"] # Used in SwiftUI boilerplate naming
+ allowed_symbols: ["_"] # Used in SwiftUI boilerplate naming
+identifier_name:
+ excluded: ["id"] # Required for Identifiable conformance
diff --git a/Shared/ContentView.swift b/Shared/ContentView.swift
deleted file mode 100644
index 1297731..0000000
--- a/Shared/ContentView.swift
+++ /dev/null
@@ -1,13 +0,0 @@
-import SwiftUI
-
-struct ContentView: View {
- var body: some View {
- Text("Hello, WriteFreely!").padding()
- }
-}
-
-struct ContentView_Previews: PreviewProvider {
- static var previews: some View {
- ContentView()
- }
-}
diff --git a/Shared/Extensions/View+Keyboard.swift b/Shared/Extensions/View+Keyboard.swift
new file mode 100644
index 0000000..a24c81c
--- /dev/null
+++ b/Shared/Extensions/View+Keyboard.swift
@@ -0,0 +1,9 @@
+import SwiftUI
+
+#if canImport(UIKit)
+extension View {
+ func hideKeyboard() {
+ UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
+ }
+}
+#endif
diff --git a/Shared/Navigation/ContentView.swift b/Shared/Navigation/ContentView.swift
new file mode 100644
index 0000000..3bb8a26
--- /dev/null
+++ b/Shared/Navigation/ContentView.swift
@@ -0,0 +1,27 @@
+import SwiftUI
+
+struct ContentView: View {
+ @ObservedObject var postStore: PostStore
+
+ var body: some View {
+ NavigationView {
+ PostList(postStore: postStore)
+ .frame(maxHeight: .infinity)
+ .navigationTitle("Posts")
+ .toolbar {
+ NavigationLink(destination: PostEditor()) {
+ Image(systemName: "plus")
+ }
+ }
+
+ Text("Select a post, or create a new draft.")
+ .foregroundColor(.secondary)
+ }
+ }
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView(postStore: testPostStore)
+ }
+}
diff --git a/Shared/Post/Post.swift b/Shared/Post/Post.swift
new file mode 100644
index 0000000..e1bf6e3
--- /dev/null
+++ b/Shared/Post/Post.swift
@@ -0,0 +1,53 @@
+import Foundation
+import WriteFreely
+
+struct Post: Identifiable {
+ var id = UUID()
+ var title: String
+ var body: String
+ var createdDate: Date
+ var status: PostStatus = .draft
+ var editableText: String {
+ return """
+ # \(self.title)
+
+ \(self.body)
+ """
+ }
+}
+
+let testPost = Post(
+ title: "Test Post Title",
+ body: """
+ Here's some cool sample body text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultrices \
+ posuere dignissim. Vestibulum a libero tempor, lacinia nulla vitae, congue purus. Nunc ac nulla quam. Duis \
+ tincidunt eros augue, et volutpat tortor pulvinar ut. Nullam sit amet maximus urna. Phasellus non dignissim lacus.\
+ Nulla ac posuere ex. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec \
+ non molestie mauris. Suspendisse potenti. Vivamus at erat turpis.
+
+ Pellentesque porttitor gravida tincidunt. Sed vitae eros non metus aliquam hendrerit. Aliquam sed risus suscipit \
+ turpis dictum dictum. Duis lacus lectus, dictum vel felis in, rhoncus fringilla felis. Nunc id dolor nisl. Aliquam \
+ euismod purus elit. Nullam egestas neque leo, sed aliquet ligula ultrices nec.
+ """,
+ createdDate: Date(),
+ status: .published)
+
+let testPostData = [
+ Post(
+ title: "My First Post",
+ body: "Look at me, creating a first post! That's cool.",
+ createdDate: Date(timeIntervalSince1970: 1595429452),
+ status: .published
+ ),
+ Post(
+ title: "Post 2: The Quickening",
+ body: "See, here's the rule about Highlander jokes: _there can be only one_.",
+ createdDate: Date(timeIntervalSince1970: 1595514125),
+ status: .edited
+ ),
+ Post(
+ title: "The Post Revolutions",
+ body: "I can never keep the Matrix movie order straight. Why not just call them part 2 and part 3?",
+ createdDate: Date(timeIntervalSince1970: 1595600006)
+ )
+]
diff --git a/Shared/Post/PostCell.swift b/Shared/Post/PostCell.swift
new file mode 100644
index 0000000..1a2a0cd
--- /dev/null
+++ b/Shared/Post/PostCell.swift
@@ -0,0 +1,41 @@
+import SwiftUI
+
+struct PostCell: View {
+ var post: Post
+ var body: some View {
+ NavigationLink(
+ destination: PostEditor(
+ textString: post.editableText,
+ postStatus: post.status
+ )
+ ) {
+ HStack {
+ VStack(alignment: .leading) {
+ Text(post.title)
+ .font(.headline)
+ .lineLimit(1)
+ Text(buildDateString(from: post.createdDate))
+ .font(.caption)
+ .foregroundColor(.secondary)
+ .lineLimit(1)
+ }
+ Spacer()
+ PostStatusBadge(postStatus: post.status)
+ }
+ }
+ }
+
+ func buildDateString(from date: Date) -> String {
+ let dateFormatter = DateFormatter()
+ dateFormatter.dateStyle = .long
+ dateFormatter.timeStyle = .short
+
+ return dateFormatter.string(from: date)
+ }
+}
+
+struct PostCell_Previews: PreviewProvider {
+ static var previews: some View {
+ PostCell(post: testPost)
+ }
+}
diff --git a/Shared/Post/PostEditor.swift b/Shared/Post/PostEditor.swift
new file mode 100644
index 0000000..b47dc99
--- /dev/null
+++ b/Shared/Post/PostEditor.swift
@@ -0,0 +1,41 @@
+//
+// PostEditor.swift
+// WriteFreely-MultiPlatform
+//
+// Created by Angelo Stavrow on 2020-07-24.
+//
+
+import SwiftUI
+
+struct PostEditor: View {
+ @State var textString: String = ""
+ @State private var hasUnpublishedChanges: Bool = false
+ var postStatus: PostStatus = .draft
+
+ var body: some View {
+ TextEditor(text: $textString.animation())
+ .font(.body)
+ .padding()
+ .onChange(of: textString) { _ in
+ if postStatus == .published {
+ hasUnpublishedChanges = true
+ }
+ }
+ .toolbar {
+ if hasUnpublishedChanges {
+ PostStatusBadge(postStatus: .edited)
+ } else {
+ PostStatusBadge(postStatus: postStatus)
+ }
+ }
+ }
+}
+
+struct PostEditor_Previews: PreviewProvider {
+ static var previews: some View {
+ PostEditor(
+ textString: testPost.editableText,
+ postStatus: testPost.status
+ )
+ }
+}
diff --git a/Shared/Post/PostList.swift b/Shared/Post/PostList.swift
new file mode 100644
index 0000000..8c2e81e
--- /dev/null
+++ b/Shared/Post/PostList.swift
@@ -0,0 +1,21 @@
+import SwiftUI
+
+struct PostList: View {
+ var postStore: PostStore
+
+ var body: some View {
+ List {
+ Text("\(postStore.posts.count) Posts")
+ .foregroundColor(.secondary)
+ ForEach(postStore.posts) { post in
+ PostCell(post: post)
+ }
+ }
+ }
+}
+
+struct PostList_Previews: PreviewProvider {
+ static var previews: some View {
+ PostList(postStore: testPostStore)
+ }
+}
diff --git a/Shared/Post/PostStatusBadge.swift b/Shared/Post/PostStatusBadge.swift
new file mode 100644
index 0000000..03275c4
--- /dev/null
+++ b/Shared/Post/PostStatusBadge.swift
@@ -0,0 +1,63 @@
+import SwiftUI
+
+enum PostStatus {
+ case draft
+ case edited
+ case published
+}
+
+struct PostStatusBadge: View {
+ @State var postStatus: PostStatus
+
+ var body: some View {
+ let (badgeLabel, badgeColor) = setupBadgeProperties(for: postStatus)
+ Text(badgeLabel)
+ .font(.caption)
+ .fontWeight(.bold)
+ .foregroundColor(.white)
+ .textCase(.uppercase)
+ .lineLimit(1)
+ .padding(EdgeInsets(top: 2.5, leading: 7.5, bottom: 2.5, trailing: 7.5))
+ .background(badgeColor)
+ .clipShape(RoundedRectangle(cornerRadius: 5.0, style: .circular))
+ }
+
+ func setupBadgeProperties(for status: PostStatus) -> (String, Color) {
+ var badgeLabel: String
+ var badgeColor: Color
+
+ switch status {
+ case .draft:
+ badgeLabel = "draft"
+ badgeColor = Color(red: 0.75, green: 0.5, blue: 0.85, opacity: 1.0)
+ case .edited:
+ badgeLabel = "edited"
+ badgeColor = Color(red: 0.75, green: 0.7, blue: 0.1, opacity: 1.0)
+ case .published:
+ badgeLabel = "published"
+ badgeColor = .gray
+ }
+
+ return (badgeLabel, badgeColor)
+ }
+}
+
+struct PostStatusBadge_DraftPreviews: PreviewProvider {
+ static var previews: some View {
+ PostStatusBadge(postStatus: .draft)
+ }
+}
+
+struct PostStatusBadge_EditedPreviews: PreviewProvider {
+ static var previews: some View {
+ Group {
+ PostStatusBadge(postStatus: .edited)
+ }
+ }
+}
+
+struct PostStatusBadge_PublishedPreviews: PreviewProvider {
+ static var previews: some View {
+ PostStatusBadge(postStatus: .published)
+ }
+}
diff --git a/Shared/Post/PostStore.swift b/Shared/Post/PostStore.swift
new file mode 100644
index 0000000..03916ba
--- /dev/null
+++ b/Shared/Post/PostStore.swift
@@ -0,0 +1,11 @@
+import Foundation
+
+class PostStore: ObservableObject {
+ @Published var posts: [Post]
+
+ init(posts: [Post] = []) {
+ self.posts = posts
+ }
+}
+
+let testPostStore = PostStore(posts: testPostData)
diff --git a/Shared/WriteFreely_MultiPlatformApp.swift b/Shared/WriteFreely_MultiPlatformApp.swift
index bc1f3ed..1004d26 100644
--- a/Shared/WriteFreely_MultiPlatformApp.swift
+++ b/Shared/WriteFreely_MultiPlatformApp.swift
@@ -1,10 +1,11 @@
import SwiftUI
@main
struct WriteFreely_MultiPlatformApp: App {
+ @StateObject private var store = PostStore()
var body: some Scene {
WindowGroup {
- ContentView()
+ ContentView(postStore: store)
}
}
}
diff --git a/WriteFreely-MultiPlatform.xcodeproj/project.pbxproj b/WriteFreely-MultiPlatform.xcodeproj/project.pbxproj
index 04faa5c..e4697b6 100644
--- a/WriteFreely-MultiPlatform.xcodeproj/project.pbxproj
+++ b/WriteFreely-MultiPlatform.xcodeproj/project.pbxproj
@@ -1,795 +1,883 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 52;
objects = {
/* Begin PBXBuildFile section */
+ 1756AE6B24CB1E4B00FD7257 /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE6A24CB1E4B00FD7257 /* Post.swift */; };
+ 1756AE6C24CB1E4B00FD7257 /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE6A24CB1E4B00FD7257 /* Post.swift */; };
+ 1756AE6E24CB255B00FD7257 /* PostStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE6D24CB255B00FD7257 /* PostStore.swift */; };
+ 1756AE6F24CB255B00FD7257 /* PostStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE6D24CB255B00FD7257 /* PostStore.swift */; };
+ 1756AE7424CB26FA00FD7257 /* PostCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE7324CB26FA00FD7257 /* PostCell.swift */; };
+ 1756AE7524CB26FA00FD7257 /* PostCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE7324CB26FA00FD7257 /* PostCell.swift */; };
+ 1756AE7724CB2EDD00FD7257 /* PostEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE7624CB2EDD00FD7257 /* PostEditor.swift */; };
+ 1756AE7824CB2EDD00FD7257 /* PostEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE7624CB2EDD00FD7257 /* PostEditor.swift */; };
+ 1756AE7A24CB65DF00FD7257 /* PostList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE7924CB65DF00FD7257 /* PostList.swift */; };
+ 1756AE7B24CB65DF00FD7257 /* PostList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE7924CB65DF00FD7257 /* PostList.swift */; };
+ 1756AE8124CB844500FD7257 /* View+Keyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1756AE8024CB844500FD7257 /* View+Keyboard.swift */; };
17DF329D24C87D3500BCE2E3 /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF329C24C87D3500BCE2E3 /* Tests_iOS.swift */; };
17DF32A824C87D3500BCE2E3 /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF32A724C87D3500BCE2E3 /* Tests_macOS.swift */; };
17DF32AA24C87D3500BCE2E3 /* WriteFreely_MultiPlatformApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF328124C87D3300BCE2E3 /* WriteFreely_MultiPlatformApp.swift */; };
17DF32AB24C87D3500BCE2E3 /* WriteFreely_MultiPlatformApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF328124C87D3300BCE2E3 /* WriteFreely_MultiPlatformApp.swift */; };
17DF32AC24C87D3500BCE2E3 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF328224C87D3300BCE2E3 /* ContentView.swift */; };
17DF32AD24C87D3500BCE2E3 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF328224C87D3300BCE2E3 /* ContentView.swift */; };
17DF32AE24C87D3500BCE2E3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 17DF328324C87D3500BCE2E3 /* Assets.xcassets */; };
17DF32AF24C87D3500BCE2E3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 17DF328324C87D3500BCE2E3 /* Assets.xcassets */; };
17DF32C024C87D7B00BCE2E3 /* WriteFreely in Frameworks */ = {isa = PBXBuildFile; productRef = 17DF32BF24C87D7B00BCE2E3 /* WriteFreely */; };
17DF32C324C87D8D00BCE2E3 /* WriteFreely in Frameworks */ = {isa = PBXBuildFile; productRef = 17DF32C224C87D8D00BCE2E3 /* WriteFreely */; };
+ 17DF32D524C8CA3400BCE2E3 /* PostStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF32D424C8CA3400BCE2E3 /* PostStatusBadge.swift */; };
+ 17DF32D624C8CA3400BCE2E3 /* PostStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17DF32D424C8CA3400BCE2E3 /* PostStatusBadge.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
17DF329924C87D3500BCE2E3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 17DF327C24C87D3300BCE2E3 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 17DF328724C87D3500BCE2E3;
remoteInfo = "WriteFreely-MultiPlatform (iOS)";
};
17DF32A424C87D3500BCE2E3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 17DF327C24C87D3300BCE2E3 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 17DF328F24C87D3500BCE2E3;
remoteInfo = "WriteFreely-MultiPlatform (macOS)";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 1756AE6A24CB1E4B00FD7257 /* Post.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = "<group>"; };
+ 1756AE6D24CB255B00FD7257 /* PostStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostStore.swift; sourceTree = "<group>"; };
+ 1756AE7324CB26FA00FD7257 /* PostCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostCell.swift; sourceTree = "<group>"; };
+ 1756AE7624CB2EDD00FD7257 /* PostEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostEditor.swift; sourceTree = "<group>"; };
+ 1756AE7924CB65DF00FD7257 /* PostList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostList.swift; sourceTree = "<group>"; };
+ 1756AE8024CB844500FD7257 /* View+Keyboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Keyboard.swift"; sourceTree = "<group>"; };
17DF328124C87D3300BCE2E3 /* WriteFreely_MultiPlatformApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WriteFreely_MultiPlatformApp.swift; sourceTree = "<group>"; };
17DF328224C87D3300BCE2E3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
17DF328324C87D3500BCE2E3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
17DF328824C87D3500BCE2E3 /* WriteFreely-MultiPlatform.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "WriteFreely-MultiPlatform.app"; sourceTree = BUILT_PRODUCTS_DIR; };
17DF328B24C87D3500BCE2E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
17DF329024C87D3500BCE2E3 /* WriteFreely-MultiPlatform.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "WriteFreely-MultiPlatform.app"; sourceTree = BUILT_PRODUCTS_DIR; };
17DF329224C87D3500BCE2E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
17DF329324C87D3500BCE2E3 /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = "<group>"; };
17DF329824C87D3500BCE2E3 /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
17DF329C24C87D3500BCE2E3 /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = "<group>"; };
17DF329E24C87D3500BCE2E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
17DF32A324C87D3500BCE2E3 /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
17DF32A724C87D3500BCE2E3 /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = "<group>"; };
17DF32A924C87D3500BCE2E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
17DF32C624C884FF00BCE2E3 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
17DF32C724C8853700BCE2E3 /* CODE_OF_CONDUCT.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CODE_OF_CONDUCT.md; sourceTree = "<group>"; };
17DF32C824C8854B00BCE2E3 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = "<group>"; };
17DF32C924C8855E00BCE2E3 /* LICENSE.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = "<group>"; };
17DF32CA24C8856C00BCE2E3 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
+ 17DF32D424C8CA3400BCE2E3 /* PostStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostStatusBadge.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
17DF328524C87D3500BCE2E3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32C024C87D7B00BCE2E3 /* WriteFreely in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF328D24C87D3500BCE2E3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32C324C87D8D00BCE2E3 /* WriteFreely in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF329524C87D3500BCE2E3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF32A024C87D3500BCE2E3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 1756AE7F24CB841200FD7257 /* Extensions */ = {
+ isa = PBXGroup;
+ children = (
+ 1756AE8024CB844500FD7257 /* View+Keyboard.swift */,
+ );
+ path = Extensions;
+ sourceTree = "<group>";
+ };
17DF327B24C87D3300BCE2E3 = {
isa = PBXGroup;
children = (
17DF32C624C884FF00BCE2E3 /* README.md */,
17DF32C924C8855E00BCE2E3 /* LICENSE.md */,
17DF32CA24C8856C00BCE2E3 /* CHANGELOG.md */,
17DF32C724C8853700BCE2E3 /* CODE_OF_CONDUCT.md */,
17DF32C824C8854B00BCE2E3 /* CONTRIBUTING.md */,
17DF328024C87D3300BCE2E3 /* Shared */,
17DF328A24C87D3500BCE2E3 /* iOS */,
17DF329124C87D3500BCE2E3 /* macOS */,
17DF329B24C87D3500BCE2E3 /* Tests iOS */,
17DF32A624C87D3500BCE2E3 /* Tests macOS */,
17DF328924C87D3500BCE2E3 /* Products */,
17DF32C124C87D8D00BCE2E3 /* Frameworks */,
);
sourceTree = "<group>";
};
17DF328024C87D3300BCE2E3 /* Shared */ = {
isa = PBXGroup;
children = (
17DF328124C87D3300BCE2E3 /* WriteFreely_MultiPlatformApp.swift */,
- 17DF328224C87D3300BCE2E3 /* ContentView.swift */,
17DF328324C87D3500BCE2E3 /* Assets.xcassets */,
+ 17DF32D024C8B75C00BCE2E3 /* Model */,
+ 1756AE7F24CB841200FD7257 /* Extensions */,
+ 17DF32CC24C8B72300BCE2E3 /* Navigation */,
+ 17DF32D224C8B78D00BCE2E3 /* Collection */,
+ 17DF32D124C8B78500BCE2E3 /* Post */,
+ 17DF32D324C8C9F600BCE2E3 /* Components */,
);
path = Shared;
sourceTree = "<group>";
};
17DF328924C87D3500BCE2E3 /* Products */ = {
isa = PBXGroup;
children = (
17DF328824C87D3500BCE2E3 /* WriteFreely-MultiPlatform.app */,
17DF329024C87D3500BCE2E3 /* WriteFreely-MultiPlatform.app */,
17DF329824C87D3500BCE2E3 /* Tests iOS.xctest */,
17DF32A324C87D3500BCE2E3 /* Tests macOS.xctest */,
);
name = Products;
sourceTree = "<group>";
};
17DF328A24C87D3500BCE2E3 /* iOS */ = {
isa = PBXGroup;
children = (
17DF328B24C87D3500BCE2E3 /* Info.plist */,
);
path = iOS;
sourceTree = "<group>";
};
17DF329124C87D3500BCE2E3 /* macOS */ = {
isa = PBXGroup;
children = (
17DF329224C87D3500BCE2E3 /* Info.plist */,
17DF329324C87D3500BCE2E3 /* macOS.entitlements */,
);
path = macOS;
sourceTree = "<group>";
};
17DF329B24C87D3500BCE2E3 /* Tests iOS */ = {
isa = PBXGroup;
children = (
17DF329C24C87D3500BCE2E3 /* Tests_iOS.swift */,
17DF329E24C87D3500BCE2E3 /* Info.plist */,
);
path = "Tests iOS";
sourceTree = "<group>";
};
17DF32A624C87D3500BCE2E3 /* Tests macOS */ = {
isa = PBXGroup;
children = (
17DF32A724C87D3500BCE2E3 /* Tests_macOS.swift */,
17DF32A924C87D3500BCE2E3 /* Info.plist */,
);
path = "Tests macOS";
sourceTree = "<group>";
};
17DF32C124C87D8D00BCE2E3 /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
+ 17DF32CC24C8B72300BCE2E3 /* Navigation */ = {
+ isa = PBXGroup;
+ children = (
+ 17DF328224C87D3300BCE2E3 /* ContentView.swift */,
+ );
+ path = Navigation;
+ sourceTree = "<group>";
+ };
+ 17DF32D024C8B75C00BCE2E3 /* Model */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ path = Model;
+ sourceTree = "<group>";
+ };
+ 17DF32D124C8B78500BCE2E3 /* Post */ = {
+ isa = PBXGroup;
+ children = (
+ 1756AE6A24CB1E4B00FD7257 /* Post.swift */,
+ 1756AE7324CB26FA00FD7257 /* PostCell.swift */,
+ 1756AE7624CB2EDD00FD7257 /* PostEditor.swift */,
+ 1756AE7924CB65DF00FD7257 /* PostList.swift */,
+ 1756AE6D24CB255B00FD7257 /* PostStore.swift */,
+ 17DF32D424C8CA3400BCE2E3 /* PostStatusBadge.swift */,
+ );
+ path = Post;
+ sourceTree = "<group>";
+ };
+ 17DF32D224C8B78D00BCE2E3 /* Collection */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ path = Collection;
+ sourceTree = "<group>";
+ };
+ 17DF32D324C8C9F600BCE2E3 /* Components */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ path = Components;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
17DF328724C87D3500BCE2E3 /* WriteFreely-MultiPlatform (iOS) */ = {
isa = PBXNativeTarget;
buildConfigurationList = 17DF32B224C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "WriteFreely-MultiPlatform (iOS)" */;
buildPhases = (
17DF328424C87D3500BCE2E3 /* Sources */,
17DF328524C87D3500BCE2E3 /* Frameworks */,
17DF328624C87D3500BCE2E3 /* Resources */,
17DF32C424C87E6700BCE2E3 /* ShellScript */,
);
buildRules = (
);
dependencies = (
);
name = "WriteFreely-MultiPlatform (iOS)";
packageProductDependencies = (
17DF32BF24C87D7B00BCE2E3 /* WriteFreely */,
);
productName = "WriteFreely-MultiPlatform (iOS)";
productReference = 17DF328824C87D3500BCE2E3 /* WriteFreely-MultiPlatform.app */;
productType = "com.apple.product-type.application";
};
17DF328F24C87D3500BCE2E3 /* WriteFreely-MultiPlatform (macOS) */ = {
isa = PBXNativeTarget;
buildConfigurationList = 17DF32B524C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "WriteFreely-MultiPlatform (macOS)" */;
buildPhases = (
17DF328C24C87D3500BCE2E3 /* Sources */,
17DF328D24C87D3500BCE2E3 /* Frameworks */,
17DF328E24C87D3500BCE2E3 /* Resources */,
17DF32C524C87FDB00BCE2E3 /* ShellScript */,
);
buildRules = (
);
dependencies = (
);
name = "WriteFreely-MultiPlatform (macOS)";
packageProductDependencies = (
17DF32C224C87D8D00BCE2E3 /* WriteFreely */,
);
productName = "WriteFreely-MultiPlatform (macOS)";
productReference = 17DF329024C87D3500BCE2E3 /* WriteFreely-MultiPlatform.app */;
productType = "com.apple.product-type.application";
};
17DF329724C87D3500BCE2E3 /* Tests iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 17DF32B824C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "Tests iOS" */;
buildPhases = (
17DF329424C87D3500BCE2E3 /* Sources */,
17DF329524C87D3500BCE2E3 /* Frameworks */,
17DF329624C87D3500BCE2E3 /* Resources */,
);
buildRules = (
);
dependencies = (
17DF329A24C87D3500BCE2E3 /* PBXTargetDependency */,
);
name = "Tests iOS";
productName = "Tests iOS";
productReference = 17DF329824C87D3500BCE2E3 /* Tests iOS.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
17DF32A224C87D3500BCE2E3 /* Tests macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 17DF32BB24C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "Tests macOS" */;
buildPhases = (
17DF329F24C87D3500BCE2E3 /* Sources */,
17DF32A024C87D3500BCE2E3 /* Frameworks */,
17DF32A124C87D3500BCE2E3 /* Resources */,
);
buildRules = (
);
dependencies = (
17DF32A524C87D3500BCE2E3 /* PBXTargetDependency */,
);
name = "Tests macOS";
productName = "Tests macOS";
productReference = 17DF32A324C87D3500BCE2E3 /* Tests macOS.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
17DF327C24C87D3300BCE2E3 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1200;
LastUpgradeCheck = 1200;
TargetAttributes = {
17DF328724C87D3500BCE2E3 = {
CreatedOnToolsVersion = 12.0;
};
17DF328F24C87D3500BCE2E3 = {
CreatedOnToolsVersion = 12.0;
};
17DF329724C87D3500BCE2E3 = {
CreatedOnToolsVersion = 12.0;
TestTargetID = 17DF328724C87D3500BCE2E3;
};
17DF32A224C87D3500BCE2E3 = {
CreatedOnToolsVersion = 12.0;
TestTargetID = 17DF328F24C87D3500BCE2E3;
};
};
};
buildConfigurationList = 17DF327F24C87D3300BCE2E3 /* Build configuration list for PBXProject "WriteFreely-MultiPlatform" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 17DF327B24C87D3300BCE2E3;
packageReferences = (
17DF32BE24C87D7B00BCE2E3 /* XCRemoteSwiftPackageReference "writefreely-swift" */,
);
productRefGroup = 17DF328924C87D3500BCE2E3 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
17DF328724C87D3500BCE2E3 /* WriteFreely-MultiPlatform (iOS) */,
17DF328F24C87D3500BCE2E3 /* WriteFreely-MultiPlatform (macOS) */,
17DF329724C87D3500BCE2E3 /* Tests iOS */,
17DF32A224C87D3500BCE2E3 /* Tests macOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
17DF328624C87D3500BCE2E3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32AE24C87D3500BCE2E3 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF328E24C87D3500BCE2E3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32AF24C87D3500BCE2E3 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF329624C87D3500BCE2E3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF32A124C87D3500BCE2E3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
17DF32C424C87E6700BCE2E3 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Run SwiftLint on builds\nif which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
};
17DF32C524C87FDB00BCE2E3 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Run SwiftLint on builds\nif which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
17DF328424C87D3500BCE2E3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32AC24C87D3500BCE2E3 /* ContentView.swift in Sources */,
+ 1756AE8124CB844500FD7257 /* View+Keyboard.swift in Sources */,
+ 1756AE7724CB2EDD00FD7257 /* PostEditor.swift in Sources */,
+ 17DF32D524C8CA3400BCE2E3 /* PostStatusBadge.swift in Sources */,
+ 1756AE7A24CB65DF00FD7257 /* PostList.swift in Sources */,
17DF32AA24C87D3500BCE2E3 /* WriteFreely_MultiPlatformApp.swift in Sources */,
+ 1756AE6E24CB255B00FD7257 /* PostStore.swift in Sources */,
+ 1756AE6B24CB1E4B00FD7257 /* Post.swift in Sources */,
+ 1756AE7424CB26FA00FD7257 /* PostCell.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF328C24C87D3500BCE2E3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32AD24C87D3500BCE2E3 /* ContentView.swift in Sources */,
+ 1756AE7824CB2EDD00FD7257 /* PostEditor.swift in Sources */,
+ 17DF32D624C8CA3400BCE2E3 /* PostStatusBadge.swift in Sources */,
+ 1756AE7B24CB65DF00FD7257 /* PostList.swift in Sources */,
17DF32AB24C87D3500BCE2E3 /* WriteFreely_MultiPlatformApp.swift in Sources */,
+ 1756AE6F24CB255B00FD7257 /* PostStore.swift in Sources */,
+ 1756AE6C24CB1E4B00FD7257 /* Post.swift in Sources */,
+ 1756AE7524CB26FA00FD7257 /* PostCell.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF329424C87D3500BCE2E3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
17DF329D24C87D3500BCE2E3 /* Tests_iOS.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
17DF329F24C87D3500BCE2E3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
17DF32A824C87D3500BCE2E3 /* Tests_macOS.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
17DF329A24C87D3500BCE2E3 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 17DF328724C87D3500BCE2E3 /* WriteFreely-MultiPlatform (iOS) */;
targetProxy = 17DF329924C87D3500BCE2E3 /* PBXContainerItemProxy */;
};
17DF32A524C87D3500BCE2E3 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 17DF328F24C87D3500BCE2E3 /* WriteFreely-MultiPlatform (macOS) */;
targetProxy = 17DF32A424C87D3500BCE2E3 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
17DF32B024C87D3500BCE2E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
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_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
17DF32B124C87D3500BCE2E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
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_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
name = Release;
};
17DF32B324C87D3500BCE2E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TPPAB4YBA6;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.WriteFreely-MultiPlatform";
PRODUCT_NAME = "WriteFreely-MultiPlatform";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
17DF32B424C87D3500BCE2E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TPPAB4YBA6;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = iOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.WriteFreely-MultiPlatform";
PRODUCT_NAME = "WriteFreely-MultiPlatform";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
17DF32B624C87D3500BCE2E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = TPPAB4YBA6;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = macOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.16;
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.WriteFreely-MultiPlatform";
PRODUCT_NAME = "WriteFreely-MultiPlatform";
SDKROOT = macosx;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
17DF32B724C87D3500BCE2E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = TPPAB4YBA6;
ENABLE_HARDENED_RUNTIME = YES;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = macOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.16;
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.WriteFreely-MultiPlatform";
PRODUCT_NAME = "WriteFreely-MultiPlatform";
SDKROOT = macosx;
SWIFT_VERSION = 5.0;
};
name = Release;
};
17DF32B924C87D3500BCE2E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TPPAB4YBA6;
INFOPLIST_FILE = "Tests iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.Tests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "WriteFreely-MultiPlatform (iOS)";
};
name = Debug;
};
17DF32BA24C87D3500BCE2E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TPPAB4YBA6;
INFOPLIST_FILE = "Tests iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.Tests-iOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "WriteFreely-MultiPlatform (iOS)";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
17DF32BC24C87D3500BCE2E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = TPPAB4YBA6;
INFOPLIST_FILE = "Tests macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.15;
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.Tests-macOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = "WriteFreely-MultiPlatform (macOS)";
};
name = Debug;
};
17DF32BD24C87D3500BCE2E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = TPPAB4YBA6;
INFOPLIST_FILE = "Tests macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.15;
PRODUCT_BUNDLE_IDENTIFIER = "com.abunchtell.Tests-macOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
SWIFT_VERSION = 5.0;
TEST_TARGET_NAME = "WriteFreely-MultiPlatform (macOS)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
17DF327F24C87D3300BCE2E3 /* Build configuration list for PBXProject "WriteFreely-MultiPlatform" */ = {
isa = XCConfigurationList;
buildConfigurations = (
17DF32B024C87D3500BCE2E3 /* Debug */,
17DF32B124C87D3500BCE2E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
17DF32B224C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "WriteFreely-MultiPlatform (iOS)" */ = {
isa = XCConfigurationList;
buildConfigurations = (
17DF32B324C87D3500BCE2E3 /* Debug */,
17DF32B424C87D3500BCE2E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
17DF32B524C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "WriteFreely-MultiPlatform (macOS)" */ = {
isa = XCConfigurationList;
buildConfigurations = (
17DF32B624C87D3500BCE2E3 /* Debug */,
17DF32B724C87D3500BCE2E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
17DF32B824C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "Tests iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
17DF32B924C87D3500BCE2E3 /* Debug */,
17DF32BA24C87D3500BCE2E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
17DF32BB24C87D3500BCE2E3 /* Build configuration list for PBXNativeTarget "Tests macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
17DF32BC24C87D3500BCE2E3 /* Debug */,
17DF32BD24C87D3500BCE2E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
17DF32BE24C87D7B00BCE2E3 /* XCRemoteSwiftPackageReference "writefreely-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "git@github.com:writeas/writefreely-swift.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.1.1;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
17DF32BF24C87D7B00BCE2E3 /* WriteFreely */ = {
isa = XCSwiftPackageProductDependency;
package = 17DF32BE24C87D7B00BCE2E3 /* XCRemoteSwiftPackageReference "writefreely-swift" */;
productName = WriteFreely;
};
17DF32C224C87D8D00BCE2E3 /* WriteFreely */ = {
isa = XCSwiftPackageProductDependency;
package = 17DF32BE24C87D7B00BCE2E3 /* XCRemoteSwiftPackageReference "writefreely-swift" */;
productName = WriteFreely;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 17DF327C24C87D3300BCE2E3 /* Project object */;
}

File Metadata

Mime Type
text/x-diff
Expires
Thu, Mar 12, 12:03 PM (22 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3653446

Event Timeline