Use atproto actions with ease in iOS shortcuts

readme and move to github links for forks instead of local

Changed files
+90 -29
at_toolbox.xcodeproj
project.xcworkspace
xcshareddata
+7 -1
README.md
··· 1 - # at_toolbox_opensource 1 + # AT Toolbox 2 + 3 + ![An iOS icon of a toolbox with an @ in the middle](./shortcut/Assets.xcassets/AppIcon.appiconset/512.png) 4 + 5 + This is the source code for the [iOS app AT Toolbox](https://apps.apple.com/us/app/at-toolbox/id6747999688) as of release 1.0.4. The code is a bit rough in places and will not find much in the way of documentation. It is my first iOS app and I never expected to open source it. I am sharing this source code with the hope that it can help other atproto developers build iOS apps with swift. Things like maybe an app to backup your account to your phone? If you have any questions on it please feel free to reach out to me [@baileytownsend](https://bsky.app/profile/baileytownsend.dev). I'm not sure how often this repo will see updates, but I do plan on pushing things here and there if I think it can benefit the community as a whole. 6 + 7 + This repo does depend on two forks. Which is [fatfingers23/ATProtoKit](https://github.com/fatfingers23/ATProtoKit/tree/feature/UserSessionRegistryProtocol) and [fatfingers23/ATIdentityTools](https://github.com/fatfingers23/ATIdentityTools). The plan is to eventually merge these changes back up stream, but it has not happen yet.
+50 -13
at_toolbox.xcodeproj/project.pbxproj
··· 10 10 4B9388BE2E20B74C0067CD4B /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9388BD2E20B74C0067CD4B /* StoreKit.framework */; }; 11 11 4B9E72CB2E255D7600DC1E77 /* AT Toolbox.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 4B9E72CA2E255D7600DC1E77 /* AT Toolbox.storekit */; }; 12 12 4B9E72D82E25FAC300DC1E77 /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 4B9E72D72E25FAC300DC1E77 /* ZIPFoundation */; }; 13 + 4BC2E75C2E5D0E2F00003BF2 /* ATIdentityTools in Frameworks */ = {isa = PBXBuildFile; productRef = 4BC2E75B2E5D0E2F00003BF2 /* ATIdentityTools */; }; 14 + 4BC2E75E2E5D0E2F00003BF2 /* DIDCore in Frameworks */ = {isa = PBXBuildFile; productRef = 4BC2E75D2E5D0E2F00003BF2 /* DIDCore */; }; 15 + 4BC2E7612E5D0E9100003BF2 /* ATMacro in Frameworks */ = {isa = PBXBuildFile; productRef = 4BC2E7602E5D0E9100003BF2 /* ATMacro */; }; 16 + 4BC2E7632E5D0E9100003BF2 /* ATProtoKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4BC2E7622E5D0E9100003BF2 /* ATProtoKit */; }; 13 17 4BC6D6712E0C810F00967DB4 /* ATMacro in Frameworks */ = {isa = PBXBuildFile; productRef = 4BC6D6702E0C810F00967DB4 /* ATMacro */; }; 14 18 4BC6D6732E0C810F00967DB4 /* ATProtoKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4BC6D6722E0C810F00967DB4 /* ATProtoKit */; }; 15 19 4BCBC0A12E0E0EC1003753C8 /* ATIdentityTools in Frameworks */ = {isa = PBXBuildFile; productRef = 4BCBC0A02E0E0EC1003753C8 /* ATIdentityTools */; }; ··· 81 85 4BC6D6712E0C810F00967DB4 /* ATMacro in Frameworks */, 82 86 4BCBC0A32E0E0EC1003753C8 /* DIDCore in Frameworks */, 83 87 4BCBC0A12E0E0EC1003753C8 /* ATIdentityTools in Frameworks */, 88 + 4BC2E75E2E5D0E2F00003BF2 /* DIDCore in Frameworks */, 89 + 4BC2E7612E5D0E9100003BF2 /* ATMacro in Frameworks */, 84 90 4B9388BE2E20B74C0067CD4B /* StoreKit.framework in Frameworks */, 85 91 4BC6D6732E0C810F00967DB4 /* ATProtoKit in Frameworks */, 86 92 4BDB7D1C2E16225900439106 /* Cache in Frameworks */, 87 93 4B9E72D82E25FAC300DC1E77 /* ZIPFoundation in Frameworks */, 94 + 4BC2E75C2E5D0E2F00003BF2 /* ATIdentityTools in Frameworks */, 95 + 4BC2E7632E5D0E9100003BF2 /* ATProtoKit in Frameworks */, 88 96 ); 89 97 runOnlyForDeploymentPostprocessing = 0; 90 98 }; ··· 161 169 4BCBC0A22E0E0EC1003753C8 /* DIDCore */, 162 170 4BDB7D1B2E16225900439106 /* Cache */, 163 171 4B9E72D72E25FAC300DC1E77 /* ZIPFoundation */, 172 + 4BC2E75B2E5D0E2F00003BF2 /* ATIdentityTools */, 173 + 4BC2E75D2E5D0E2F00003BF2 /* DIDCore */, 174 + 4BC2E7602E5D0E9100003BF2 /* ATMacro */, 175 + 4BC2E7622E5D0E9100003BF2 /* ATProtoKit */, 164 176 ); 165 177 productName = shortcut; 166 178 productReference = 4BBE4EE82E09F976009F9D3E /* shortcut.app */; ··· 245 257 mainGroup = 4BBE4EDF2E09F975009F9D3E; 246 258 minimizedProjectReferenceProxies = 1; 247 259 packageReferences = ( 248 - 4BC6D66F2E0C810F00967DB4 /* XCLocalSwiftPackageReference "../ATProtoKit" */, 249 - 4BCBC09F2E0E0EC1003753C8 /* XCLocalSwiftPackageReference "../ATIdentityTools" */, 250 260 4BDB7D1A2E16225900439106 /* XCRemoteSwiftPackageReference "Cache" */, 251 261 4B9E72D62E25FAC300DC1E77 /* XCRemoteSwiftPackageReference "ZIPFoundation" */, 262 + 4BC2E75A2E5D0E2F00003BF2 /* XCRemoteSwiftPackageReference "ATIdentityTools" */, 263 + 4BC2E75F2E5D0E9100003BF2 /* XCRemoteSwiftPackageReference "ATProtoKit" */, 252 264 ); 253 265 preferredProjectObjectVersion = 77; 254 266 productRefGroup = 4BBE4EE92E09F976009F9D3E /* Products */; ··· 623 635 }; 624 636 /* End XCConfigurationList section */ 625 637 626 - /* Begin XCLocalSwiftPackageReference section */ 627 - 4BC6D66F2E0C810F00967DB4 /* XCLocalSwiftPackageReference "../ATProtoKit" */ = { 628 - isa = XCLocalSwiftPackageReference; 629 - relativePath = ../ATProtoKit; 630 - }; 631 - 4BCBC09F2E0E0EC1003753C8 /* XCLocalSwiftPackageReference "../ATIdentityTools" */ = { 632 - isa = XCLocalSwiftPackageReference; 633 - relativePath = ../ATIdentityTools; 634 - }; 635 - /* End XCLocalSwiftPackageReference section */ 636 - 637 638 /* Begin XCRemoteSwiftPackageReference section */ 638 639 4B9E72D62E25FAC300DC1E77 /* XCRemoteSwiftPackageReference "ZIPFoundation" */ = { 639 640 isa = XCRemoteSwiftPackageReference; ··· 643 644 minimumVersion = 0.9.19; 644 645 }; 645 646 }; 647 + 4BC2E75A2E5D0E2F00003BF2 /* XCRemoteSwiftPackageReference "ATIdentityTools" */ = { 648 + isa = XCRemoteSwiftPackageReference; 649 + repositoryURL = "https://github.com/fatfingers23/ATIdentityTools.git"; 650 + requirement = { 651 + branch = main; 652 + kind = branch; 653 + }; 654 + }; 655 + 4BC2E75F2E5D0E9100003BF2 /* XCRemoteSwiftPackageReference "ATProtoKit" */ = { 656 + isa = XCRemoteSwiftPackageReference; 657 + repositoryURL = "https://github.com/fatfingers23/ATProtoKit.git"; 658 + requirement = { 659 + branch = feature/UserSessionRegistryProtocol; 660 + kind = branch; 661 + }; 662 + }; 646 663 4BDB7D1A2E16225900439106 /* XCRemoteSwiftPackageReference "Cache" */ = { 647 664 isa = XCRemoteSwiftPackageReference; 648 665 repositoryURL = "https://github.com/hyperoslo/Cache.git"; ··· 658 675 isa = XCSwiftPackageProductDependency; 659 676 package = 4B9E72D62E25FAC300DC1E77 /* XCRemoteSwiftPackageReference "ZIPFoundation" */; 660 677 productName = ZIPFoundation; 678 + }; 679 + 4BC2E75B2E5D0E2F00003BF2 /* ATIdentityTools */ = { 680 + isa = XCSwiftPackageProductDependency; 681 + package = 4BC2E75A2E5D0E2F00003BF2 /* XCRemoteSwiftPackageReference "ATIdentityTools" */; 682 + productName = ATIdentityTools; 683 + }; 684 + 4BC2E75D2E5D0E2F00003BF2 /* DIDCore */ = { 685 + isa = XCSwiftPackageProductDependency; 686 + package = 4BC2E75A2E5D0E2F00003BF2 /* XCRemoteSwiftPackageReference "ATIdentityTools" */; 687 + productName = DIDCore; 688 + }; 689 + 4BC2E7602E5D0E9100003BF2 /* ATMacro */ = { 690 + isa = XCSwiftPackageProductDependency; 691 + package = 4BC2E75F2E5D0E9100003BF2 /* XCRemoteSwiftPackageReference "ATProtoKit" */; 692 + productName = ATMacro; 693 + }; 694 + 4BC2E7622E5D0E9100003BF2 /* ATProtoKit */ = { 695 + isa = XCSwiftPackageProductDependency; 696 + package = 4BC2E75F2E5D0E9100003BF2 /* XCRemoteSwiftPackageReference "ATProtoKit" */; 697 + productName = ATProtoKit; 661 698 }; 662 699 4BC6D6702E0C810F00967DB4 /* ATMacro */ = { 663 700 isa = XCSwiftPackageProductDependency;
+33 -15
at_toolbox.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
··· 1 1 { 2 - "originHash" : "a5fef376f4b110244116021a9a3613b013c5987eb3b56400cfd863e10bdd3095", 2 + "originHash" : "12743c0bb07048259462b8a3dfd3a0cc5aac174d35597fef9c1a0c89aa8fd81c", 3 3 "pins" : [ 4 4 { 5 5 "identity" : "atcommontools", 6 6 "kind" : "remoteSourceControl", 7 7 "location" : "https://github.com/ATProtoKit/ATCommonTools.git", 8 8 "state" : { 9 - "revision" : "ca5eee7f09202699707cb249d411bbb2c7597986", 10 - "version" : "0.0.13" 9 + "revision" : "b79cc284178dd4a8271e39b6610f96394cd7958c", 10 + "version" : "0.0.14" 11 11 } 12 12 }, 13 13 { ··· 15 15 "kind" : "remoteSourceControl", 16 16 "location" : "https://github.com/ATProtoKit/ATCryptography.git", 17 17 "state" : { 18 - "revision" : "51137acf84f6da1c3ff41b208733e7e3d4208a0d", 19 - "version" : "0.1.10" 18 + "revision" : "b1b69232a4d980d55e4566acb5455f37397c2f60", 19 + "version" : "0.2.0" 20 + } 21 + }, 22 + { 23 + "identity" : "atidentitytools", 24 + "kind" : "remoteSourceControl", 25 + "location" : "https://github.com/fatfingers23/ATIdentityTools.git", 26 + "state" : { 27 + "branch" : "main", 28 + "revision" : "e97578f42982d417ad2fe2b5137c0d2cdf36aad8" 29 + } 30 + }, 31 + { 32 + "identity" : "atprotokit", 33 + "kind" : "remoteSourceControl", 34 + "location" : "https://github.com/fatfingers23/ATProtoKit.git", 35 + "state" : { 36 + "branch" : "feature/UserSessionRegistryProtocol", 37 + "revision" : "02f2ce39833d32a5007d3062055e6ab7aaa7725a" 20 38 } 21 39 }, 22 40 { ··· 24 42 "kind" : "remoteSourceControl", 25 43 "location" : "https://github.com/attaswift/BigInt.git", 26 44 "state" : { 27 - "revision" : "99c4b9fb0f52dc9182aee106b07c3d205583b98c", 28 - "version" : "5.6.0" 45 + "revision" : "e07e00fa1fd435143a2dcf8b7eec9a7710b2fdfe", 46 + "version" : "5.7.0" 29 47 } 30 48 }, 31 49 { ··· 51 69 "kind" : "remoteSourceControl", 52 70 "location" : "https://github.com/apple/swift-asn1.git", 53 71 "state" : { 54 - "revision" : "a54383ada6cecde007d374f58f864e29370ba5c3", 55 - "version" : "1.3.2" 72 + "revision" : "f70225981241859eb4aa1a18a75531d26637c8cc", 73 + "version" : "1.4.0" 56 74 } 57 75 }, 58 76 { ··· 69 87 "kind" : "remoteSourceControl", 70 88 "location" : "https://github.com/MasterJ93/swift-cbor.git", 71 89 "state" : { 72 - "revision" : "640a30c0651d734f21b800b221c60feee6382e69", 73 - "version" : "0.0.5" 90 + "revision" : "7452e1d1dbfb99fa0baca7732cf199be1bfc7e7c", 91 + "version" : "0.0.8" 74 92 } 75 93 }, 76 94 { ··· 78 96 "kind" : "remoteSourceControl", 79 97 "location" : "https://github.com/apple/swift-crypto.git", 80 98 "state" : { 81 - "revision" : "e8d6eba1fef23ae5b359c46b03f7d94be2f41fed", 82 - "version" : "3.12.3" 99 + "revision" : "334e682869394ee239a57dbe9262bff3cd9495bd", 100 + "version" : "3.14.0" 83 101 } 84 102 }, 85 103 { ··· 87 105 "kind" : "remoteSourceControl", 88 106 "location" : "https://github.com/apple/swift-log.git", 89 107 "state" : { 90 - "revision" : "3d8596ed08bd13520157f0355e35caed215ffbfa", 91 - "version" : "1.6.3" 108 + "revision" : "ce592ae52f982c847a4efc0dd881cc9eb32d29f2", 109 + "version" : "1.6.4" 92 110 } 93 111 }, 94 112 {