commit - 1ed36f6257c611d45fc129e4436a63b4513ba59e
commit + 35e7d1ea65e988b0b158fd2aa25cd9bb86f4190d
blob - 193ee72409b8b2a15037f9abbe1ec93489efbd1e (mode 644)
blob + /dev/null
--- apple/Alias.swift
+++ /dev/null
-import Foundation
-import SwiftUI
-
-struct Alias: Hashable, Codable, Identifiable {
- var id: Int
- var recipient: String
- var destination: String
- var expiry: String
- var note: String
-}
\ No newline at end of file
blob - ee70c2e55a9cdf49943c48ccf17bf8db1752792a (mode 644)
blob + /dev/null
--- apple/AliasApp.swift
+++ /dev/null
-import SwiftUI
-
-@main
-struct AliasApp: App {
- var body: some Scene {
- WindowGroup {
- ContentView()
- }
- }
-}
blob - /dev/null
blob + 1d7727f6836df33996b61fa8eec8ac9602905853 (mode 644)
--- /dev/null
+++ apple/Shared/Alias.swift
+import Foundation
+import SwiftUI
+
+struct Alias: Hashable, Codable, Identifiable {
+ var id: String
+ var recipient: String
+ var destination: String
+ var expiry: Date
+ var note: String
+}
+
+struct fAlias: Hashable, Codable {
+ var Recipient: String
+ var Destination: String
+ var Expiry: String
+ var Note: String
+}
+
+func createAlias(note: String, expiry: Date) -> Void {
+ print("TODO tried to create an alias")
+}
+
+func deleteAlias(recipient: String) -> Void {
+ print("TODO tried to delete \(recipient)")
+}
blob - /dev/null
blob + 2e4904004e9ef2d86622b33d5ace5951419d6e77 (mode 644)
--- /dev/null
+++ apple/Shared/AliasData.swift
+import Foundation
+
+var aliases: [Alias] = load("aliases.json")
+
+func load(_ filename: String) -> [Alias] {
+ let data: Data
+
+ guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
+ else {
+ fatalError("Couldn't find \(filename) in main bundle.")
+ }
+
+ do {
+ data = try Data(contentsOf: file)
+ } catch {
+ fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
+ }
+
+ do {
+ let decoder = JSONDecoder()
+ var faliases: [fAlias]
+ var aliases = [Alias]()
+ faliases = try decoder.decode([fAlias].self, from: data)
+ let rfc3339 = DateFormatter()
+ rfc3339.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
+ for fa in faliases {
+ let a = Alias(
+ id: fa.Recipient,
+ recipient: fa.Recipient,
+ destination: fa.Destination,
+ expiry: rfc3339.date(from: fa.Expiry) ?? Date(timeIntervalSince1970: 0),
+ note: fa.Note
+ )
+ aliases.append(a)
+ }
+ return aliases
+ } catch {
+ fatalError("Couldn't parse \(filename): \(error)")
+ }
+}
blob - /dev/null
blob + 9eaba13a4141a66a8956d2c31da261e80e4e8b95 (mode 644)
--- /dev/null
+++ apple/Shared/AliasDetail.swift
+import SwiftUI
+
+struct AliasDetail: View {
+ var alias: Alias
+
+ var body: some View {
+ List {
+ AliasAttribute(key: "Recipient", value: alias.recipient)
+ AliasAttribute(key: "Destination", value: alias.destination)
+ AliasAttribute(key: "Expiry", value: alias.expiry.description)
+ Section(header: Text("Note")) {
+ Text(alias.note)
+ }
+ }
+ .listStyle(.automatic)
+ .navigationTitle(alias.recipient)
+ .toolbar {
+ ToolbarItem(placement: .destructiveAction) {
+ Button(action: {
+ deleteAlias(recipient: alias.recipient)
+ }) {
+ Label("Delete", systemImage: "trash").foregroundColor(.red)
+ }
+ }
+ }
+ }
+}
+
+struct AliasAttribute: View {
+ var key: String
+ var value: String
+ var body: some View {
+ HStack {
+ Text(key).bold()
+ Spacer()
+ Text(value)
+ }
+ }
+}
blob - /dev/null
blob + 0ba64ae6c0442b7d1002d9510c7392aecacf3526 (mode 644)
--- /dev/null
+++ apple/Shared/AliasRow.swift
+import SwiftUI
+
+struct AliasRow: View {
+ var alias: Alias
+ var body: some View {
+ HStack {
+ Text(alias.recipient)
+ }
+ }
+}
blob - /dev/null
blob + eb8789700816459c1e1480e0b34781d9fb78a1ca (mode 644)
--- /dev/null
+++ apple/Shared/Assets.xcassets/AccentColor.colorset/Contents.json
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
blob - /dev/null
blob + c136eaff76757e350b64c7b5982d9c1f1dd4481f (mode 644)
--- /dev/null
+++ apple/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "76x76"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "76x76"
+ },
+ {
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "83.5x83.5"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "1x",
+ "size" : "16x16"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "16x16"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "1x",
+ "size" : "32x32"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "32x32"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "1x",
+ "size" : "128x128"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "128x128"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "1x",
+ "size" : "256x256"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "256x256"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "1x",
+ "size" : "512x512"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "512x512"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
blob - /dev/null
blob + 73c00596a7fca3f3d4bdd64053b69d86745f9e10 (mode 644)
--- /dev/null
+++ apple/Shared/Assets.xcassets/Contents.json
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
blob - /dev/null
blob + 833de7c1dda364a437a3c8d23bb4329e1d5477e2 (mode 644)
--- /dev/null
+++ apple/Shared/aliases.json
+[
+ {
+ "Recipient": "windclothes_isoamarine17",
+ "Destination": "o@olowe.co",
+ "Expiry": "1970-01-01T00:00:00Z",
+ "Note": "for Acme Insurance marketing mail"
+ },
+ {
+ "Recipient": "kotukutuku_cryptogamic30",
+ "Destination": "o@olowe.co",
+ "Expiry": "2023-06-10T10:23:45Z",
+ "Note": "newsletter for spam.example.org"
+ }
+]
blob - /dev/null
blob + 6e254c565bfa91f843fd20f222472df2245483d9 (mode 644)
--- /dev/null
+++ apple/Shared/mailmuxApp.swift
+import SwiftUI
+
+@main
+struct mailmuxApp: App {
+ var body: some Scene {
+ WindowGroup {
+ ContentView()
+ }
+ .commands {
+ CommandGroup(after: CommandGroupPlacement.newItem) {
+ Button("New Alias...", action: {
+ print("clicked new from menu")
+ })
+ }
+ }
+ #if os(macOS)
+ Settings {
+ Preferences()
+ }
+ #endif
+ }
+}
+
+struct ContentView: View {
+ var body: some View {
+ AliasList(aliases: aliases)
+ }
+}
+
+struct AliasList: View {
+ var aliases: [Alias]
+ @State private var createPresented: Bool = false
+ var body: some View {
+ NavigationView {
+ List(aliases) { alias in
+ NavigationLink {
+ AliasDetail(alias: alias)
+ }
+ label: {
+ AliasRow(alias: alias)
+ }
+ }
+ .navigationTitle("Aliases")
+ .sheet(isPresented: $createPresented) {
+ Create(presented: $createPresented)
+ }
+ .toolbar {
+ ToolbarItem(placement: .primaryAction) {
+ Button(action: {
+ createPresented = true
+ }) {
+ Label("Create", systemImage: "plus")
+ }
+ }
+ }
+ }
+ }
+}
+
+struct CredentialsForm: View {
+ @AppStorage("username") private var username = ""
+ @AppStorage("password") private var password = ""
+
+ var body: some View {
+ Form {
+ TextField(text: $username, prompt: Text("me@example.com")) {
+ Text("Username:")
+ }
+ SecureField(text: $password, prompt: Text("Required")) {
+ Text("Password:")
+ }
+ }
+ }
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView()
+ }
+}
blob - 1a4f6ecc8d51ee6db1cf36fd216aa631bcce0d71 (mode 644)
blob + /dev/null
--- apple/AliasData.swift
+++ /dev/null
-import Foundation
-
-var aliases: [Alias] = load("aliases.json")
-
-func load<T: Decodable>(_ filename: String) -> T {
- let data: Data
-
- guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
- else {
- fatalError("Couldn't find \(filename) in main bundle.")
- }
-
- do {
- data = try Data(contentsOf: file)
- } catch {
- fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
- }
-
- do {
- let decoder = JSONDecoder()
- return try decoder.decode(T.self, from: data)
- } catch {
- fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
- }
-}
blob - /dev/null
blob + 801d4508191112976ad8efbcbc377429c0926e8c (mode 644)
--- /dev/null
+++ apple/iOS/Create.swift
+import SwiftUI
+
+struct Create: View {
+ @Binding var presented: Bool
+ @State private var note = ""
+ @State private var expiry = Date()
+ var body: some View {
+ NavigationView {
+ Form {
+ DatePicker("Expiry:", selection: $expiry, in: PartialRangeFrom(Date()))
+ Section(header: Text("Note")) {
+ TextEditor(text: $note)
+ }
+ }
+ .toolbar {
+ ToolbarItem(placement: .confirmationAction) {
+ Button("Create", action: {
+ createAlias(note: note, expiry: expiry)
+ presented = false
+ })
+ .keyboardShortcut(.return)
+ }
+ ToolbarItem(placement: .cancellationAction) {
+ Button("Cancel", action: {
+ presented = false
+ })
+ .keyboardShortcut(.cancelAction)
+ }
+ }
+
+ }
+ }
+}
blob - /dev/null
blob + 6ae8ce1425c4b42fd87fd78105f6c9d965663378 (mode 644)
--- /dev/null
+++ apple/iOS/Settings.swift
+import SwiftUI
+
+struct Settings: View {
+ var body: some View {
+ CredentialsForm()
+ }
+}
blob - 38af6c41384a010c8dfa4f15d470d4f0d35f4936 (mode 644)
blob + /dev/null
--- apple/AliasDetail.swift
+++ /dev/null
-import SwiftUI
-
-struct AliasDetail: View {
- var alias: Alias
-
- var body: some View {
- ScrollView {
- VStack(alignment: .leading) {
- Text(alias.recipient)
- .font(.title)
-
- HStack {
- Text("Delivers to \(alias.destination)")
- Spacer()
- Text("Expires \(alias.expiry)")
- }
- .font(.subheadline)
- .foregroundColor(.secondary)
-
- Divider()
-
- Text("Note")
- .font(.title2)
- Text(alias.note)
- }
- .padding()
- }
- .navigationTitle(alias.recipient)
- .navigationBarTitleDisplayMode(.inline)
- }
-}
\ No newline at end of file
blob - /dev/null
blob + e1f94bbb40f8ed1739ba272652318d701a8a4d18 (mode 644)
--- /dev/null
+++ apple/macOS/Create.swift
+import SwiftUI
+
+struct Create: View {
+ @Binding var presented: Bool
+ @State private var note = ""
+ @State private var expiry = Date()
+ var body: some View {
+ Spacer()
+ HStack {
+ Spacer()
+ Form {
+ DatePicker("Expiry:", selection: $expiry, in: PartialRangeFrom(Date()))
+ TextField("Note:", text: $note, prompt: Text("Optional"))
+ HStack {
+ Button("Cancel", action: {
+ presented = false
+ }).keyboardShortcut(.cancelAction)
+ Button("Create", action: {
+ createAlias(note: note, expiry: expiry)
+ }).keyboardShortcut(.return)
+ }
+ }
+ Spacer()
+ }
+ Spacer()
+ }
+}
blob - /dev/null
blob + 983e6002d278b14e1d2d88402e885aa98ebdb151 (mode 644)
--- /dev/null
+++ apple/macOS/Preferences.swift
+import SwiftUI
+
+struct Preferences: View {
+ var body: some View {
+ Spacer()
+ HStack {
+ Spacer()
+ CredentialsForm()
+ Spacer()
+ }
+ Spacer()
+ }
+}
blob - /dev/null
blob + f2ef3ae0265b40c475e8ef90e3a311c31786c594 (mode 644)
--- /dev/null
+++ apple/macOS/macOS.entitlements
+<?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.app-sandbox</key>
+ <true/>
+ <key>com.apple.security.files.user-selected.read-only</key>
+ <true/>
+</dict>
+</plist>
blob - 77b4451c90fc7372139d078016fe037b55378461 (mode 644)
blob + /dev/null
--- apple/AliasList.swift
+++ /dev/null
-import SwiftUI
-
-struct AliasList: View {
- var body: some View {
- NavigationView {
- List(aliases) { alias in
- NavigationLink {
- AliasDetail(alias: alias)
- } label: {
- AliasRow(alias: alias)
- }
- }
- .navigationTitle("Aliases")
- }
- }
-}
-
-struct LandmarkList_Previews: PreviewProvider {
- static var previews: some View {
- AliasList()
- }
-}
blob - /dev/null
blob + a3f6560f003e204b3f28e611394adc841c641f48 (mode 644)
--- /dev/null
+++ apple/mailmux.xcodeproj/project.pbxproj
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 55;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 405422A8282E36E700B778CF /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422A7282E36E700B778CF /* Tests_iOS.swift */; };
+ 405422AA282E36E700B778CF /* Tests_iOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422A9282E36E700B778CF /* Tests_iOSLaunchTests.swift */; };
+ 405422B4282E36E700B778CF /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422B3282E36E700B778CF /* Tests_macOS.swift */; };
+ 405422B6282E36E700B778CF /* Tests_macOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422B5282E36E700B778CF /* Tests_macOSLaunchTests.swift */; };
+ 405422B8282E36E700B778CF /* mailmuxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4054228F282E36E400B778CF /* mailmuxApp.swift */; };
+ 405422BB282E36E700B778CF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 40542291282E36E700B778CF /* Assets.xcassets */; };
+ 405422BC282E36E700B778CF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 40542291282E36E700B778CF /* Assets.xcassets */; };
+ 405422D4282E38A100B778CF /* AliasList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CB282E38A100B778CF /* AliasList.swift */; };
+ 405422D5282E38A100B778CF /* aliases.json in Resources */ = {isa = PBXBuildFile; fileRef = 405422CC282E38A100B778CF /* aliases.json */; };
+ 405422D8282E38A100B778CF /* AliasData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CF282E38A100B778CF /* AliasData.swift */; };
+ 405422DA282E38A100B778CF /* Alias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D1282E38A100B778CF /* Alias.swift */; };
+ 405422DC282E38A100B778CF /* AliasRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D3282E38A100B778CF /* AliasRow.swift */; };
+ 4068C10D282E730300455B04 /* mailmuxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4054228F282E36E400B778CF /* mailmuxApp.swift */; };
+ 4068C10E282E730600455B04 /* Alias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D1282E38A100B778CF /* Alias.swift */; };
+ 4068C10F282E730900455B04 /* AliasData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CF282E38A100B778CF /* AliasData.swift */; };
+ 4068C110282E730C00455B04 /* AliasRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D3282E38A100B778CF /* AliasRow.swift */; };
+ 4068C111282E730F00455B04 /* AliasList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CB282E38A100B778CF /* AliasList.swift */; };
+ 4068C113282E732E00455B04 /* aliases.json in Resources */ = {isa = PBXBuildFile; fileRef = 405422CC282E38A100B778CF /* aliases.json */; };
+ 4068C115282E74A300455B04 /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4068C114282E74A300455B04 /* Create.swift */; };
+ 408C2D95282E8DEF00540E59 /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408C2D94282E8DEF00540E59 /* Create.swift */; };
+ 408C2D97282E9B1600540E59 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408C2D96282E9B1600540E59 /* Settings.swift */; };
+ 40E153E5282E6CF900D30F9B /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E153E4282E6CF900D30F9B /* Preferences.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 405422A4282E36E700B778CF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 4054228A282E36E400B778CF /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 40542295282E36E700B778CF;
+ remoteInfo = "mailmux (iOS)";
+ };
+ 405422B0282E36E700B778CF /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 4054228A282E36E400B778CF /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 4054229B282E36E700B778CF;
+ remoteInfo = "mailmux (macOS)";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 4054228F282E36E400B778CF /* mailmuxApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = mailmuxApp.swift; sourceTree = "<group>"; };
+ 40542291282E36E700B778CF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ 40542296282E36E700B778CF /* mailmux.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mailmux.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4054229C282E36E700B778CF /* mailmux.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mailmux.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4054229E282E36E700B778CF /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = "<group>"; };
+ 405422A3282E36E700B778CF /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 405422A7282E36E700B778CF /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = "<group>"; };
+ 405422A9282E36E700B778CF /* Tests_iOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOSLaunchTests.swift; sourceTree = "<group>"; };
+ 405422AF282E36E700B778CF /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 405422B3282E36E700B778CF /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = "<group>"; };
+ 405422B5282E36E700B778CF /* Tests_macOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOSLaunchTests.swift; sourceTree = "<group>"; };
+ 405422CB282E38A100B778CF /* AliasList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AliasList.swift; path = Shared/AliasList.swift; sourceTree = SOURCE_ROOT; };
+ 405422CC282E38A100B778CF /* aliases.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = aliases.json; path = Shared/aliases.json; sourceTree = SOURCE_ROOT; };
+ 405422CF282E38A100B778CF /* AliasData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AliasData.swift; path = Shared/AliasData.swift; sourceTree = SOURCE_ROOT; };
+ 405422D1282E38A100B778CF /* Alias.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Alias.swift; path = Shared/Alias.swift; sourceTree = SOURCE_ROOT; };
+ 405422D3282E38A100B778CF /* AliasRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AliasRow.swift; path = Shared/AliasRow.swift; sourceTree = SOURCE_ROOT; };
+ 4068C114282E74A300455B04 /* Create.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Create.swift; sourceTree = "<group>"; };
+ 408C2D94282E8DEF00540E59 /* Create.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Create.swift; sourceTree = "<group>"; };
+ 408C2D96282E9B1600540E59 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
+ 40E153E4282E6CF900D30F9B /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 40542293282E36E700B778CF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 40542299282E36E700B778CF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 405422A0282E36E700B778CF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 405422AC282E36E700B778CF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 40542289282E36E400B778CF = {
+ isa = PBXGroup;
+ children = (
+ 408C2D93282E8DE400540E59 /* iOS */,
+ 4054228E282E36E400B778CF /* Shared */,
+ 4054229D282E36E700B778CF /* macOS */,
+ 405422A6282E36E700B778CF /* Tests iOS */,
+ 405422B2282E36E700B778CF /* Tests macOS */,
+ 40542297282E36E700B778CF /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 4054228E282E36E400B778CF /* Shared */ = {
+ isa = PBXGroup;
+ children = (
+ 4054228F282E36E400B778CF /* mailmuxApp.swift */,
+ 405422D1282E38A100B778CF /* Alias.swift */,
+ 405422CF282E38A100B778CF /* AliasData.swift */,
+ 405422D3282E38A100B778CF /* AliasRow.swift */,
+ 405422CB282E38A100B778CF /* AliasList.swift */,
+ 40542291282E36E700B778CF /* Assets.xcassets */,
+ 405422CC282E38A100B778CF /* aliases.json */,
+ );
+ path = Shared;
+ sourceTree = "<group>";
+ usesTabs = 1;
+ };
+ 40542297282E36E700B778CF /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 40542296282E36E700B778CF /* mailmux.app */,
+ 4054229C282E36E700B778CF /* mailmux.app */,
+ 405422A3282E36E700B778CF /* Tests iOS.xctest */,
+ 405422AF282E36E700B778CF /* Tests macOS.xctest */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 4054229D282E36E700B778CF /* macOS */ = {
+ isa = PBXGroup;
+ children = (
+ 4068C114282E74A300455B04 /* Create.swift */,
+ 40E153E4282E6CF900D30F9B /* Preferences.swift */,
+ 4054229E282E36E700B778CF /* macOS.entitlements */,
+ );
+ path = macOS;
+ sourceTree = "<group>";
+ };
+ 405422A6282E36E700B778CF /* Tests iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 405422A7282E36E700B778CF /* Tests_iOS.swift */,
+ 405422A9282E36E700B778CF /* Tests_iOSLaunchTests.swift */,
+ );
+ path = "Tests iOS";
+ sourceTree = "<group>";
+ };
+ 405422B2282E36E700B778CF /* Tests macOS */ = {
+ isa = PBXGroup;
+ children = (
+ 405422B3282E36E700B778CF /* Tests_macOS.swift */,
+ 405422B5282E36E700B778CF /* Tests_macOSLaunchTests.swift */,
+ );
+ path = "Tests macOS";
+ sourceTree = "<group>";
+ };
+ 408C2D93282E8DE400540E59 /* iOS */ = {
+ isa = PBXGroup;
+ children = (
+ 408C2D94282E8DEF00540E59 /* Create.swift */,
+ 408C2D96282E9B1600540E59 /* Settings.swift */,
+ );
+ path = iOS;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 40542295282E36E700B778CF /* mailmux (iOS) */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 405422BF282E36E700B778CF /* Build configuration list for PBXNativeTarget "mailmux (iOS)" */;
+ buildPhases = (
+ 40542292282E36E700B778CF /* Sources */,
+ 40542293282E36E700B778CF /* Frameworks */,
+ 40542294282E36E700B778CF /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "mailmux (iOS)";
+ productName = "mailmux (iOS)";
+ productReference = 40542296282E36E700B778CF /* mailmux.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 4054229B282E36E700B778CF /* mailmux (macOS) */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 405422C2282E36E700B778CF /* Build configuration list for PBXNativeTarget "mailmux (macOS)" */;
+ buildPhases = (
+ 40542298282E36E700B778CF /* Sources */,
+ 40542299282E36E700B778CF /* Frameworks */,
+ 4054229A282E36E700B778CF /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "mailmux (macOS)";
+ productName = "mailmux (macOS)";
+ productReference = 4054229C282E36E700B778CF /* mailmux.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 405422A2282E36E700B778CF /* Tests iOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 405422C5282E36E700B778CF /* Build configuration list for PBXNativeTarget "Tests iOS" */;
+ buildPhases = (
+ 4054229F282E36E700B778CF /* Sources */,
+ 405422A0282E36E700B778CF /* Frameworks */,
+ 405422A1282E36E700B778CF /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 405422A5282E36E700B778CF /* PBXTargetDependency */,
+ );
+ name = "Tests iOS";
+ productName = "Tests iOS";
+ productReference = 405422A3282E36E700B778CF /* Tests iOS.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
+ 405422AE282E36E700B778CF /* Tests macOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 405422C8282E36E700B778CF /* Build configuration list for PBXNativeTarget "Tests macOS" */;
+ buildPhases = (
+ 405422AB282E36E700B778CF /* Sources */,
+ 405422AC282E36E700B778CF /* Frameworks */,
+ 405422AD282E36E700B778CF /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 405422B1282E36E700B778CF /* PBXTargetDependency */,
+ );
+ name = "Tests macOS";
+ productName = "Tests macOS";
+ productReference = 405422AF282E36E700B778CF /* Tests macOS.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 4054228A282E36E400B778CF /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = 1;
+ LastSwiftUpdateCheck = 1330;
+ LastUpgradeCheck = 1330;
+ TargetAttributes = {
+ 40542295282E36E700B778CF = {
+ CreatedOnToolsVersion = 13.3.1;
+ };
+ 4054229B282E36E700B778CF = {
+ CreatedOnToolsVersion = 13.3.1;
+ };
+ 405422A2282E36E700B778CF = {
+ CreatedOnToolsVersion = 13.3.1;
+ TestTargetID = 40542295282E36E700B778CF;
+ };
+ 405422AE282E36E700B778CF = {
+ CreatedOnToolsVersion = 13.3.1;
+ TestTargetID = 4054229B282E36E700B778CF;
+ };
+ };
+ };
+ buildConfigurationList = 4054228D282E36E400B778CF /* Build configuration list for PBXProject "mailmux" */;
+ compatibilityVersion = "Xcode 13.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 40542289282E36E400B778CF;
+ productRefGroup = 40542297282E36E700B778CF /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 40542295282E36E700B778CF /* mailmux (iOS) */,
+ 4054229B282E36E700B778CF /* mailmux (macOS) */,
+ 405422A2282E36E700B778CF /* Tests iOS */,
+ 405422AE282E36E700B778CF /* Tests macOS */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 40542294282E36E700B778CF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4068C113282E732E00455B04 /* aliases.json in Resources */,
+ 405422BB282E36E700B778CF /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 4054229A282E36E700B778CF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 405422D5282E38A100B778CF /* aliases.json in Resources */,
+ 405422BC282E36E700B778CF /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 405422A1282E36E700B778CF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 405422AD282E36E700B778CF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 40542292282E36E700B778CF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4068C10E282E730600455B04 /* Alias.swift in Sources */,
+ 4068C10F282E730900455B04 /* AliasData.swift in Sources */,
+ 4068C10D282E730300455B04 /* mailmuxApp.swift in Sources */,
+ 4068C110282E730C00455B04 /* AliasRow.swift in Sources */,
+ 408C2D97282E9B1600540E59 /* Settings.swift in Sources */,
+ 408C2D95282E8DEF00540E59 /* Create.swift in Sources */,
+ 4068C111282E730F00455B04 /* AliasList.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 40542298282E36E700B778CF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 405422DA282E38A100B778CF /* Alias.swift in Sources */,
+ 405422DC282E38A100B778CF /* AliasRow.swift in Sources */,
+ 405422B8282E36E700B778CF /* mailmuxApp.swift in Sources */,
+ 405422D4282E38A100B778CF /* AliasList.swift in Sources */,
+ 40E153E5282E6CF900D30F9B /* Preferences.swift in Sources */,
+ 4068C115282E74A300455B04 /* Create.swift in Sources */,
+ 405422D8282E38A100B778CF /* AliasData.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 4054229F282E36E700B778CF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 405422AA282E36E700B778CF /* Tests_iOSLaunchTests.swift in Sources */,
+ 405422A8282E36E700B778CF /* Tests_iOS.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 405422AB282E36E700B778CF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 405422B6282E36E700B778CF /* Tests_macOSLaunchTests.swift in Sources */,
+ 405422B4282E36E700B778CF /* Tests_macOS.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 405422A5282E36E700B778CF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 40542295282E36E700B778CF /* mailmux (iOS) */;
+ targetProxy = 405422A4282E36E700B778CF /* PBXContainerItemProxy */;
+ };
+ 405422B1282E36E700B778CF /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 4054229B282E36E700B778CF /* mailmux (macOS) */;
+ targetProxy = 405422B0282E36E700B778CF /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 405422BD282E36E700B778CF /* 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++17";
+ 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;
+ };
+ 405422BE282E36E700B778CF /* 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++17";
+ 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;
+ };
+ 405422C0282E36E700B778CF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ 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";
+ IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = net.mailmux.mailmux;
+ PRODUCT_NAME = mailmux;
+ SDKROOT = iphoneos;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 405422C1282E36E700B778CF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ 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";
+ IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = net.mailmux.mailmux;
+ PRODUCT_NAME = mailmux;
+ SDKROOT = iphoneos;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 405422C3282E36E700B778CF /* 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;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ MACOSX_DEPLOYMENT_TARGET = 12.3;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = net.mailmux.mailmux;
+ PRODUCT_NAME = mailmux;
+ SDKROOT = macosx;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = Debug;
+ };
+ 405422C4282E36E700B778CF /* 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;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ );
+ MACOSX_DEPLOYMENT_TARGET = 12.3;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = net.mailmux.mailmux;
+ PRODUCT_NAME = mailmux;
+ SDKROOT = macosx;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ };
+ name = Release;
+ };
+ 405422C6282E36E700B778CF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = "net.mailmux.Tests-iOS";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = "mailmux (iOS)";
+ };
+ name = Debug;
+ };
+ 405422C7282E36E700B778CF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = "net.mailmux.Tests-iOS";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = iphoneos;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = "mailmux (iOS)";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 405422C9282E36E700B778CF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 12.3;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = "net.mailmux.Tests-macOS";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_VERSION = 5.0;
+ TEST_TARGET_NAME = "mailmux (macOS)";
+ };
+ name = Debug;
+ };
+ 405422CA282E36E700B778CF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 12.3;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = "net.mailmux.Tests-macOS";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ SWIFT_VERSION = 5.0;
+ TEST_TARGET_NAME = "mailmux (macOS)";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 4054228D282E36E400B778CF /* Build configuration list for PBXProject "mailmux" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 405422BD282E36E700B778CF /* Debug */,
+ 405422BE282E36E700B778CF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 405422BF282E36E700B778CF /* Build configuration list for PBXNativeTarget "mailmux (iOS)" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 405422C0282E36E700B778CF /* Debug */,
+ 405422C1282E36E700B778CF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 405422C2282E36E700B778CF /* Build configuration list for PBXNativeTarget "mailmux (macOS)" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 405422C3282E36E700B778CF /* Debug */,
+ 405422C4282E36E700B778CF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 405422C5282E36E700B778CF /* Build configuration list for PBXNativeTarget "Tests iOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 405422C6282E36E700B778CF /* Debug */,
+ 405422C7282E36E700B778CF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 405422C8282E36E700B778CF /* Build configuration list for PBXNativeTarget "Tests macOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 405422C9282E36E700B778CF /* Debug */,
+ 405422CA282E36E700B778CF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 4054228A282E36E400B778CF /* Project object */;
+}
blob - /dev/null
blob + 919434a6254f0e9651f402737811be6634a03e9c (mode 644)
--- /dev/null
+++ apple/mailmux.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:">
+ </FileRef>
+</Workspace>
blob - /dev/null
blob + 18d981003d68d0546c4804ac2ff47dd97c6e7921 (mode 644)
--- /dev/null
+++ apple/mailmux.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+<?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>IDEDidComputeMac32BitWarning</key>
+ <true/>
+</dict>
+</plist>
blob - /dev/null
blob + 3faa664ef66e1539df9d1ad48962039e29646a90 (mode 644)
Binary files /dev/null and apple/mailmux.xcodeproj/project.xcworkspace/xcuserdata/otl.xcuserdatad/UserInterfaceState.xcuserstate differ
blob - /dev/null
blob + 2e0c08c1054ad49fe3b0478a470b3d4398aaec68 (mode 644)
--- /dev/null
+++ apple/mailmux.xcodeproj/xcuserdata/otl.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+<?xml version="1.0" encoding="UTF-8"?>
+<Bucket
+ uuid = "651B7C64-B5E4-4708-B946-D37D92590821"
+ type = "1"
+ version = "2.0">
+</Bucket>
blob - /dev/null
blob + b5c30e0501b4caeb0bff655b62f2d7aa147d29df (mode 644)
--- /dev/null
+++ apple/mailmux.xcodeproj/xcuserdata/otl.xcuserdatad/xcschemes/xcschememanagement.plist
+<?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>SchemeUserState</key>
+ <dict>
+ <key>mailmux (iOS).xcscheme_^#shared#^_</key>
+ <dict>
+ <key>orderHint</key>
+ <integer>1</integer>
+ </dict>
+ <key>mailmux (macOS).xcscheme_^#shared#^_</key>
+ <dict>
+ <key>orderHint</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+</dict>
+</plist>
blob - 39d0dd052dfbd852651230635bb6780dbd1337d3 (mode 644)
blob + /dev/null
--- apple/AliasRow.swift
+++ /dev/null
-import SwiftUI
-
-struct AliasRow: View {
- var alias: Alias
-
- var body: some View {
- HStack {
- Text(alias.recipient)
- }
- }
-}
-
-struct LandmarkRow_Previews: PreviewProvider {
- static var previews: some View {
- Group {
- AliasRow(alias: aliases[0])
- AliasRow(alias: aliases[1])
- }
- .previewLayout(.fixed(width: 300, height: 70))
- }
-}
blob - a4fc745a011e67b81d1c1bc2732d56e8f5d55a15 (mode 644)
blob + /dev/null
--- apple/ContentView.swift
+++ /dev/null
-import SwiftUI
-
-struct ContentView: View {
- var body: some View {
- AliasList()
- }
-}
-
-struct ContentView_Previews: PreviewProvider {
- static var previews: some View {
- ContentView()
- }
-}
blob - 09888a84e017e83bc71e1e843ba854aad514ef1f (mode 644)
blob + /dev/null
--- apple/Login.swift
+++ /dev/null
-import SwiftUI
-
-struct Login: View {
- var body: some View {
- Form {
- TextField(text: $username, prompt: Text("me@example.com")) {
- Text("Username")
- }
- SecureField(text: $password, prompt: Text("Required")) {
- Text("Password")
- }
- }
-}
\ No newline at end of file
blob - a8aba7b257748713587713472bae813d4ef56353
blob + 8fe5766bd560d0ad5698e0ff91814aaf5e263b2f
--- apple/README
+++ apple/README
-This is untested barebones SwiftUI code for creating a CRUD macOS, iOS, iPadOS
-app for mailmux.
+A macOS, iOS, iPadOS app for interacting with mailmux as a non-administrative user.
blob - aa73bf51dee87c2735db641552498e2e93b21b03 (mode 644)
blob + /dev/null
--- apple/aliases.json
+++ /dev/null
-[
- {
- "Recipient": "windclothes_isoamarine17",
- "Destination": "o@olowe.co",
- "Expiry": "1970-01-01T00:00:00Z",
- "Note": ""
- },
- {
- "Recipient": "kotukutuku_cryptogamic30",
- "Destination": "o@olowe.co",
- "Expiry": "1970-01-01T00:00:00Z",
- "Note": ""
- }
-]
\ No newline at end of file