From 30f52b15e085c9aeecdf0aa47da4bbb7d00fbd4d Mon Sep 17 00:00:00 2001 From: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> Date: Wed, 4 Jan 2023 05:55:14 -0800 Subject: [PATCH 1/9] Revamp actions to have stable, beta and nightly builds (#210) * start on nightly builds Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update build.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update build.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update build.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update build.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update build.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update build.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Remove testing logic, final changes Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Nightly release build (#2) * Update and rename build.yml to nightly.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Create stable.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update stable.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * trigger on tag Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update stable.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update nightly.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update stable.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * add version and build number Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * test Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Revert "test" This reverts commit 9dff8d1d878a764a432ef4560300acdb4407313a. * Remove pr from stable Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * add pr.yml * Add nightly suffix and build number Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update nightly.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update stable.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update nightly.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Update nightly.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * add beta * Update nightly.yml Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * [beta] test Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> * Remove test Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com> --- .github/workflows/beta.yml | 156 ++++++++++++++++++++++++ .github/workflows/nightly.yml | 155 +++++++++++++++++++++++ .github/workflows/{build.yml => pr.yml} | 6 +- .github/workflows/stable.yml | 145 ++++++++++++++++++++++ 4 files changed, 457 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/beta.yml create mode 100644 .github/workflows/nightly.yml rename .github/workflows/{build.yml => pr.yml} (97%) create mode 100644 .github/workflows/stable.yml diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml new file mode 100644 index 00000000..08d47507 --- /dev/null +++ b/.github/workflows/beta.yml @@ -0,0 +1,156 @@ +name: Beta SideStore build +on: + push: + branches: + - develop + +jobs: + build: + name: Build and upload SideStore Beta + if: startsWith(github.event.head_commit.message, '[beta]') + concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + strategy: + fail-fast: false + matrix: + include: + - os: 'macos-12' + version: '14.2' + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: recursive + + # - name: Cache rust cargo + # id: cache-rust-cargo + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-cargo + # with: + # path: ~/.cargo + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Cache rust minimuxer + # id: cache-rust-minimuxer + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-minimuxer + # with: + # path: ./Dependencies/minimuxer/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Cache rust em_proxy + # id: cache-rust-em_proxy + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-em_proxy + # with: + # path: ./Dependencies/em_proxy/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + - name: Install dependencies + run: brew install ldid + + - name: Install rustup + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + target: aarch64-apple-ios + + # - name: Create emotional damage + # run: cd Dependencies/em_proxy && cargo build --release --target aarch64-apple-ios + + # - name: Build minimuxer + # run: cd Dependencies/minimuxer && cargo build --release --target aarch64-apple-ios + + - name: Add beta suffix to version + run: sed -e '/MARKETING_VERSION = .*/s/$/-beta.${{ github.run_number }}/' -i '' Build.xcconfig + + - name: Setup Xcode + uses: maxim-lobanov/setup-xcode@v1.4.1 + with: + xcode-version: ${{ matrix.version }} + + - name: Build SideStore + run: | + xcodebuild -project AltStore.xcodeproj \ + -scheme AltStore \ + -sdk iphoneos \ + archive -archivePath ./archive \ + CODE_SIGNING_REQUIRED=NO \ + AD_HOC_CODE_SIGNING_ALLOWED=YES \ + CODE_SIGNING_ALLOWED=NO \ + DEVELOPMENT_TEAM=XYZ0123456 \ + ORG_IDENTIFIER=com.SideStore \ + | xcpretty && exit ${PIPESTATUS[0]} + + - name: Fakesign app + run: | + rm -rf archive.xcarchive/Products/Applications/SideStore.app/Frameworks/AltStoreCore.framework/Frameworks/ + ldid -SAltStore/Resources/tempEnt.plist archive.xcarchive/Products/Applications/SideStore.app/SideStore + + - name: Convert to IPA + run: | + mkdir Payload + mkdir Payload/SideStore.app + cp -R archive.xcarchive/Products/Applications/SideStore.app/ Payload/SideStore.app/ + zip -r SideStore.ipa Payload + + - name: Upload Artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: SideStore.ipa + path: SideStore.ipa + + - name: Get version + id: version + run: echo "version=$(grep MARKETING_VERSION Build.xcconfig | sed -e "s/MARKETING_VERSION = //g")" >> $GITHUB_OUTPUT + + - name: Get current date + id: date + run: echo "date=$(date -u +'%c')" >> $GITHUB_OUTPUT + + - name: Get current date in AltStore date form + id: date_altstore + run: echo "date=$(date -u +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Upload to beta release + uses: IsaacShelton/update-existing-release@v1.3.1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + release: "Beta" + tag: "beta" + prerelease: true + files: SideStore.ipa + body: | + This is an ⚠️ **EXPERIMENTAL** ⚠️ beta build for commit [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}). + + Beta builds are hand-picked builds from development commits that will allow you to try out new features earlier than normal, but with a lower chance of bugs than if you used nightly builds. However, since these changes are newer and less tested, they still have a good chance of bugs, so **use at your own risk**. + + If you want to be on the bleeding edge and use the latest development builds, you can look at [SideStore Nightly](https://github.com/${{ github.repository }}/releases/tag/nightly). **Please be aware that these builds have a much higher chance of bugs than beta or stable**. + + If you use the `SideStore (Beta)` app, it will use the latest beta build (make sure to update it in "My Apps"). + + ## Build Info + + Built at (UTC): `${{ steps.date.outputs.date }}` + Built at (UTC date): `${{ steps.date_altstore.outputs.date }}` + Commit SHA: `${{ github.sha }}` + Version: `${{ steps.version.outputs.version }}` diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 00000000..2f8d62ba --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,155 @@ +name: Nightly SideStore build +on: + push: + branches: + - develop + +jobs: + build: + name: Build and upload SideStore Nightly + concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + strategy: + fail-fast: false + matrix: + include: + - os: 'macos-12' + version: '14.2' + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: recursive + + # - name: Cache rust cargo + # id: cache-rust-cargo + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-cargo + # with: + # path: ~/.cargo + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Cache rust minimuxer + # id: cache-rust-minimuxer + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-minimuxer + # with: + # path: ./Dependencies/minimuxer/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Cache rust em_proxy + # id: cache-rust-em_proxy + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-em_proxy + # with: + # path: ./Dependencies/em_proxy/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + - name: Install dependencies + run: brew install ldid + + - name: Install rustup + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + target: aarch64-apple-ios + + # - name: Create emotional damage + # run: cd Dependencies/em_proxy && cargo build --release --target aarch64-apple-ios + + # - name: Build minimuxer + # run: cd Dependencies/minimuxer && cargo build --release --target aarch64-apple-ios + + - name: Add nightly suffix to version + run: sed -e '/MARKETING_VERSION = .*/s/$/-nightly.${{ github.run_number }}/' -i '' Build.xcconfig + + - name: Setup Xcode + uses: maxim-lobanov/setup-xcode@v1.4.1 + with: + xcode-version: ${{ matrix.version }} + + - name: Build SideStore + run: | + xcodebuild -project AltStore.xcodeproj \ + -scheme AltStore \ + -sdk iphoneos \ + archive -archivePath ./archive \ + CODE_SIGNING_REQUIRED=NO \ + AD_HOC_CODE_SIGNING_ALLOWED=YES \ + CODE_SIGNING_ALLOWED=NO \ + DEVELOPMENT_TEAM=XYZ0123456 \ + ORG_IDENTIFIER=com.SideStore \ + | xcpretty && exit ${PIPESTATUS[0]} + + - name: Fakesign app + run: | + rm -rf archive.xcarchive/Products/Applications/SideStore.app/Frameworks/AltStoreCore.framework/Frameworks/ + ldid -SAltStore/Resources/tempEnt.plist archive.xcarchive/Products/Applications/SideStore.app/SideStore + + - name: Convert to IPA + run: | + mkdir Payload + mkdir Payload/SideStore.app + cp -R archive.xcarchive/Products/Applications/SideStore.app/ Payload/SideStore.app/ + zip -r SideStore.ipa Payload + + - name: Upload Artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: SideStore.ipa + path: SideStore.ipa + + - name: Get version + id: version + run: echo "version=$(grep MARKETING_VERSION Build.xcconfig | sed -e "s/MARKETING_VERSION = //g")" >> $GITHUB_OUTPUT + + - name: Get current date + id: date + run: echo "date=$(date -u +'%c')" >> $GITHUB_OUTPUT + + - name: Get current date in AltStore date form + id: date_altstore + run: echo "date=$(date -u +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Upload to nightly release + uses: IsaacShelton/update-existing-release@v1.3.1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + release: "Nightly" + tag: "nightly" + prerelease: true + files: SideStore.ipa + body: | + This is an ⚠️ **EXPERIMENTAL** ⚠️ nightly build for commit [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}). + + Nightly builds are built from the most recent commit which means you'll be able to try out new features very early. However, since these changes are much newer and less tested, they have a much higher chance of bugs, so **use at your own risk**. + + If you want to try out new features early but want a lower chance of bugs, you can look at [SideStore Beta](https://github.com/${{ github.repository }}/releases/tag/beta). + + If you use the `SideStore (Nightly)` app, it will use the latest nightly build (make sure to update it in "My Apps"). + + ## Build Info + + Built at (UTC): `${{ steps.date.outputs.date }}` + Built at (UTC date): `${{ steps.date_altstore.outputs.date }}` + Commit SHA: `${{ github.sha }}` + Version: `${{ steps.version.outputs.version }}` diff --git a/.github/workflows/build.yml b/.github/workflows/pr.yml similarity index 97% rename from .github/workflows/build.yml rename to .github/workflows/pr.yml index 8c7c73a1..35229496 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/pr.yml @@ -1,9 +1,5 @@ -name: Build and Upload SideStore +name: Pull Request SideStore build on: - push: - branches: - - master - - develop pull_request: jobs: diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml new file mode 100644 index 00000000..a49bfa42 --- /dev/null +++ b/.github/workflows/stable.yml @@ -0,0 +1,145 @@ +name: Stable SideStore build +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+*' + +jobs: + build: + name: Build and upload SideStore + strategy: + fail-fast: false + matrix: + include: + - os: 'macos-12' + version: '14.2' + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: recursive + + # - name: Cache rust cargo + # id: cache-rust-cargo + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-cargo + # with: + # path: ~/.cargo + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Cache rust minimuxer + # id: cache-rust-minimuxer + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-minimuxer + # with: + # path: ./Dependencies/minimuxer/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + # - name: Cache rust em_proxy + # id: cache-rust-em_proxy + # uses: actions/cache@v3 + # env: + # cache-name: cache-rust-em_proxy + # with: + # path: ./Dependencies/em_proxy/target + # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: | + # ${{ runner.os }}-build-${{ env.cache-name }}- + # ${{ runner.os }}-build- + # ${{ runner.os }}- + + - name: Install dependencies + run: brew install ldid + + - name: Install rustup + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + target: aarch64-apple-ios + + # - name: Create emotional damage + # run: cd Dependencies/em_proxy && cargo build --release --target aarch64-apple-ios + + # - name: Build minimuxer + # run: cd Dependencies/minimuxer && cargo build --release --target aarch64-apple-ios + + - name: Setup Xcode + uses: maxim-lobanov/setup-xcode@v1.4.1 + with: + xcode-version: ${{ matrix.version }} + + - name: Build SideStore + run: | + xcodebuild -project AltStore.xcodeproj \ + -scheme AltStore \ + -sdk iphoneos \ + archive -archivePath ./archive \ + CODE_SIGNING_REQUIRED=NO \ + AD_HOC_CODE_SIGNING_ALLOWED=YES \ + CODE_SIGNING_ALLOWED=NO \ + DEVELOPMENT_TEAM=XYZ0123456 \ + ORG_IDENTIFIER=com.SideStore \ + | xcpretty && exit ${PIPESTATUS[0]} + + - name: Fakesign app + run: | + rm -rf archive.xcarchive/Products/Applications/SideStore.app/Frameworks/AltStoreCore.framework/Frameworks/ + ldid -SAltStore/Resources/tempEnt.plist archive.xcarchive/Products/Applications/SideStore.app/SideStore + + - name: Convert to IPA + run: | + mkdir Payload + mkdir Payload/SideStore.app + cp -R archive.xcarchive/Products/Applications/SideStore.app/ Payload/SideStore.app/ + zip -r SideStore.ipa Payload + + - name: Upload Artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: SideStore.ipa + path: SideStore.ipa + + - name: Get version + id: version + run: echo "version=$(grep MARKETING_VERSION Build.xcconfig | sed -e "s/MARKETING_VERSION = //g")" >> $GITHUB_OUTPUT + + - name: Get current date + id: date + run: echo "date=$(date -u +'%c')" >> $GITHUB_OUTPUT + + - name: Get current date in AltStore date form + id: date_altstore + run: echo "date=$(date -u +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Upload to new stable release + uses: softprops/action-gh-release@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + name: ${{ steps.version.outputs.version }} + tag_name: ${{ github.ref }} + draft: true + files: SideStore.ipa + body: | + ## Changelog + + - TODO + + ## Build Info + + Built at (UTC): `${{ steps.date.outputs.date }}` + Built at (UTC date): `${{ steps.date_altstore.outputs.date }}` + Commit SHA: `${{ github.sha }}` + Version: `${{ steps.version.outputs.version }}` From 415eb430ff626927664e99bceddffe7310601ead Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 09:31:28 -0500 Subject: [PATCH 2/9] refs #160 codable feed structs Signed-off-by: Joseph Mattello --- AltStoreCore/Model/Source.swift | 141 ++++++++++++++++++++++++++++++ AltStoreCore/Model/StoreApp.swift | 4 +- 2 files changed, 142 insertions(+), 3 deletions(-) diff --git a/AltStoreCore/Model/Source.swift b/AltStoreCore/Model/Source.swift index c8d97c6d..8f1a72a7 100644 --- a/AltStoreCore/Model/Source.swift +++ b/AltStoreCore/Model/Source.swift @@ -7,6 +7,7 @@ // import CoreData +import UIKit public extension Source { @@ -35,6 +36,146 @@ public extension Source #endif } +public struct AppPermissionFeed: Codable { + let type: String // ALTAppPermissionType + let usageDescription: String + + enum CodingKeys: String, CodingKey + { + case type + case usageDescription + } +} + +public struct AppVersionFeed: Codable { + /* Properties */ + let version: String + let date: Date + let localizedDescription: String? + + let downloadURL: URL + let size: Int64 + + enum CodingKeys: String, CodingKey + { + case version + case date + case localizedDescription + case downloadURL + case size + } +} + +public struct PlatformURLFeed: Codable { + /* Properties */ + let platform: Platform + let downloadURL: URL + + + private enum CodingKeys: String, CodingKey + { + case platform + case downloadURL + } +} + + +public struct StoreAppFeed: Codable { + let name: String + let bundleIdentifier: String + let subtitle: String? + + let developerName: String + let localizedDescription: String + let size: Int64 + + let iconURL: URL + let screenshotURLs: [URL] + + let version: String + let versionDate: Date + let versionDescription: String? + let downloadURL: URL + let platformURLs: [PlatformURLFeed]? + + let tintColor: String? // UIColor? + let isBeta: Bool + + // let source: Source? + let appPermission: [AppPermissionFeed] + let versions: [AppVersionFeed] + + enum CodingKeys: String, CodingKey + { + case bundleIdentifier + case developerName + case downloadURL + case iconURL + case isBeta = "beta" + case localizedDescription + case name + case appPermission = "permissions" + case platformURLs + case screenshotURLs + case size + case subtitle + case tintColor + case version + case versionDate + case versionDescription + case versions + } +} + +public struct NewsItemFeed: Codable { + let identifier: String + let date: Date + + let title: String + let caption: String + let tintColor: String //UIColor + let notify: Bool + + let imageURL: URL? + let externalURL: URL? + + let appID: String? + + private enum CodingKeys: String, CodingKey + { + case identifier + case date + case title + case caption + case tintColor + case imageURL + case externalURL = "url" + case appID + case notify + } +} + + +public struct SourceJSON: Codable { + let name: String + let identifier: String + let sourceURL: URL + let userInfo: [String:String]? //[ALTSourceUserInfoKey:String]? + let apps: [StoreAppFeed] + let news: [NewsItemFeed] + + enum CodingKeys: String, CodingKey + { + case name + case identifier + case sourceURL + case userInfo + case apps + case news + } + +} + @objc(Source) public class Source: NSManagedObject, Fetchable, Decodable { diff --git a/AltStoreCore/Model/StoreApp.swift b/AltStoreCore/Model/StoreApp.swift index ad10f835..2e38b57d 100644 --- a/AltStoreCore/Model/StoreApp.swift +++ b/AltStoreCore/Model/StoreApp.swift @@ -26,14 +26,12 @@ public extension StoreApp } @objc -public enum Platform: UInt { +public enum Platform: UInt, Codable { case ios case tvos case macos } -extension Platform: Decodable {} - @objc public final class PlatformURL: NSManagedObject, Decodable { /* Properties */ From aab84c816730ebdc9a39cd7e1d45837bb0faef6c Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 09:31:41 -0500 Subject: [PATCH 3/9] add final class to some classes Signed-off-by: Joseph Mattello --- AltStore/News/NewsCollectionViewCell.swift | 2 +- AltStore/News/NewsViewController.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/AltStore/News/NewsCollectionViewCell.swift b/AltStore/News/NewsCollectionViewCell.swift index d9c4b276..3fae6638 100644 --- a/AltStore/News/NewsCollectionViewCell.swift +++ b/AltStore/News/NewsCollectionViewCell.swift @@ -8,7 +8,7 @@ import UIKit -class NewsCollectionViewCell: UICollectionViewCell +final class NewsCollectionViewCell: UICollectionViewCell { @IBOutlet var titleLabel: UILabel! @IBOutlet var captionLabel: UILabel! diff --git a/AltStore/News/NewsViewController.swift b/AltStore/News/NewsViewController.swift index 0cf77a9c..347d605f 100644 --- a/AltStore/News/NewsViewController.swift +++ b/AltStore/News/NewsViewController.swift @@ -14,7 +14,7 @@ import Roxas import Nuke -private class AppBannerFooterView: UICollectionReusableView +private final class AppBannerFooterView: UICollectionReusableView { let bannerView = AppBannerView(frame: .zero) let tapGestureRecognizer = UITapGestureRecognizer(target: nil, action: nil) @@ -41,7 +41,7 @@ private class AppBannerFooterView: UICollectionReusableView } } -class NewsViewController: UICollectionViewController +final class NewsViewController: UICollectionViewController { private lazy var dataSource = self.makeDataSource() private lazy var placeholderView = RSTPlaceholderView(frame: .zero) From 2f064fefc66a4828691de1accd43e4d2bdcc94a1 Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 09:31:51 -0500 Subject: [PATCH 4/9] log functions inlineable Signed-off-by: Joseph Mattello --- AltStore/Extensions/OSLog+SideStore.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/AltStore/Extensions/OSLog+SideStore.swift b/AltStore/Extensions/OSLog+SideStore.swift index 73fb7c0e..0cb11525 100644 --- a/AltStore/Extensions/OSLog+SideStore.swift +++ b/AltStore/Extensions/OSLog+SideStore.swift @@ -9,7 +9,7 @@ import Foundation import OSLog -let customLog = OSLog(subsystem: "org.sidestore.sidestore", +public let customLog = OSLog(subsystem: "org.sidestore.sidestore", category: "ios") @@ -18,6 +18,7 @@ public extension OSLog { /// - Parameters: /// - message: String or format string /// - args: optional args for format string + @inlinable static func error(_ message: StaticString, _ args: CVarArg...) { os_log(message, log: customLog, type: .error, args) } @@ -26,6 +27,7 @@ public extension OSLog { /// - Parameters: /// - message: String or format string /// - args: optional args for format string + @inlinable static func info(_ message: StaticString, _ args: CVarArg...) { os_log(message, log: customLog, type: .info, args) } @@ -34,6 +36,7 @@ public extension OSLog { /// - Parameters: /// - message: String or format string /// - args: optional args for format string + @inlinable static func debug(_ message: StaticString, _ args: CVarArg...) { os_log(message, log: customLog, type: .debug, args) } @@ -45,6 +48,7 @@ public extension OSLog { /// - Parameters: /// - message: String or format string /// - args: optional args for format string +@inlinable public func ELOG(_ message: StaticString, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, _ args: CVarArg...) { OSLog.error(message, args) } @@ -53,6 +57,7 @@ public func ELOG(_ message: StaticString, file: StaticString = #file, function: /// - Parameters: /// - message: String or format string /// - args: optional args for format string +@inlinable public func ILOG(_ message: StaticString, file: StaticString = #file, function: StaticString = #function, line: UInt = #line, _ args: CVarArg...) { OSLog.info(message, args) } From 42fba53554308ce1ad80cf384200e74f15cb9051 Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 09:32:04 -0500 Subject: [PATCH 5/9] allow simulator to launch w/o pairing file Signed-off-by: Joseph Mattello --- AltStore/LaunchViewController.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AltStore/LaunchViewController.swift b/AltStore/LaunchViewController.swift index 83e8c47e..5bf3eb4a 100644 --- a/AltStore/LaunchViewController.swift +++ b/AltStore/LaunchViewController.swift @@ -47,6 +47,7 @@ class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDelegate override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(true) + #if !targetEnvironment(simulator) start_em_proxy(bind_addr: Consts.Proxy.serverURL) guard let pf = fetchPairingFile() else { @@ -54,6 +55,7 @@ class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDelegate return } start_minimuxer_threads(pf) + #endif } func fetchPairingFile() -> String? { From 25b7da0677a4fbecb9616d73970f0eddd5ba96df Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 09:52:12 -0500 Subject: [PATCH 6/9] final classes marked as final Signed-off-by: Joseph Mattello --- AltStore/Analytics/AnalyticsManager.swift | 2 +- AltStore/App Detail/AppContentViewController.swift | 2 +- AltStore/App Detail/AppContentViewControllerCells.swift | 4 ++-- AltStore/App Detail/AppViewController.swift | 4 ++-- AltStore/App Detail/PermissionPopoverViewController.swift | 2 +- AltStore/App IDs/AppIDsViewController.swift | 2 +- AltStore/AppDelegate.swift | 2 +- .../Authentication/AuthenticationViewController.swift | 2 +- AltStore/Authentication/InstructionsViewController.swift | 2 +- .../Authentication/RefreshAltStoreViewController.swift | 2 +- AltStore/Authentication/SelectTeamViewController.swift | 2 +- AltStore/Browse/BrowseCollectionViewCell.swift | 2 +- AltStore/Components/AppIconImageView.swift | 2 +- AltStore/Components/BackgroundTaskManager.swift | 2 +- AltStore/Components/BannerCollectionViewCell.swift | 2 +- AltStore/Components/Button.swift | 2 +- AltStore/Components/CollapsingTextView.swift | 2 +- AltStore/Components/ForwardingNavigationController.swift | 2 +- AltStore/Components/NavigationBar.swift | 2 +- AltStore/Components/PillButton.swift | 2 +- AltStore/Components/ToastView.swift | 2 +- AltStore/Intents/IntentHandler.swift | 2 +- AltStore/LaunchViewController.swift | 2 +- AltStore/Managing Apps/AppManager.swift | 8 ++++---- AltStore/My Apps/InstalledAppsCollectionHeaderView.swift | 2 +- AltStore/My Apps/MyAppsComponents.swift | 8 ++++---- AltStore/My Apps/MyAppsViewController.swift | 2 +- AltStore/My Apps/UpdateCollectionViewCell.swift | 2 +- AltStore/Operations/AuthenticationOperation.swift | 2 +- AltStore/Operations/BackgroundRefreshAppsOperation.swift | 2 +- AltStore/Operations/DeactivateAppOperation.swift | 2 +- AltStore/Operations/DownloadAppOperation.swift | 2 +- AltStore/Operations/EnableJITOperation.swift | 2 +- AltStore/Operations/FetchAnisetteDataOperation.swift | 2 +- AltStore/Operations/FetchAppIDsOperation.swift | 2 +- .../Operations/FetchProvisioningProfilesOperation.swift | 2 +- AltStore/Operations/FetchSourceOperation.swift | 2 +- AltStore/Operations/FetchTrustedSourcesOperation.swift | 2 +- AltStore/Operations/InstallAppOperation.swift | 2 +- AltStore/Operations/OperationContexts.swift | 2 +- AltStore/Operations/Patch App/PatchAppOperation.swift | 2 +- AltStore/Operations/Patch App/PatchViewController.swift | 2 +- AltStore/Operations/RefreshAppOperation.swift | 2 +- AltStore/Operations/RefreshGroup.swift | 2 +- AltStore/Operations/RemoveAppBackupOperation.swift | 2 +- AltStore/Operations/RemoveAppOperation.swift | 2 +- AltStore/Operations/ResignAppOperation.swift | 2 +- AltStore/Operations/SendAppOperation.swift | 2 +- AltStore/Operations/UpdatePatronsOperation.swift | 2 +- AltStore/Operations/VerifyAppOperation.swift | 2 +- AltStore/SceneDelegate.swift | 2 +- AltStore/Settings/Error Log/ErrorLogTableViewCell.swift | 2 +- AltStore/Settings/Error Log/ErrorLogViewController.swift | 2 +- AltStore/Settings/InsetGroupTableViewCell.swift | 2 +- AltStore/Settings/LicensesViewController.swift | 2 +- AltStore/Settings/PatreonComponents.swift | 8 ++++---- AltStore/Settings/PatreonViewController.swift | 2 +- AltStore/Settings/RefreshAttemptsViewController.swift | 4 ++-- AltStore/Settings/SettingsHeaderFooterView.swift | 2 +- AltStore/Settings/SettingsViewController.swift | 2 +- AltStore/Sources/SourcesViewController.swift | 4 ++-- AltStore/TabBarController.swift | 2 +- 62 files changed, 75 insertions(+), 75 deletions(-) diff --git a/AltStore/Analytics/AnalyticsManager.swift b/AltStore/Analytics/AnalyticsManager.swift index 67cea6e7..8c88647f 100644 --- a/AltStore/Analytics/AnalyticsManager.swift +++ b/AltStore/Analytics/AnalyticsManager.swift @@ -71,7 +71,7 @@ extension AnalyticsManager } } -class AnalyticsManager +final class AnalyticsManager { static let shared = AnalyticsManager() diff --git a/AltStore/App Detail/AppContentViewController.swift b/AltStore/App Detail/AppContentViewController.swift index 87d502f4..6dc52b87 100644 --- a/AltStore/App Detail/AppContentViewController.swift +++ b/AltStore/App Detail/AppContentViewController.swift @@ -25,7 +25,7 @@ extension AppContentViewController } } -class AppContentViewController: UITableViewController +final class AppContentViewController: UITableViewController { var app: StoreApp! diff --git a/AltStore/App Detail/AppContentViewControllerCells.swift b/AltStore/App Detail/AppContentViewControllerCells.swift index 923b5d6c..f0eded1a 100644 --- a/AltStore/App Detail/AppContentViewControllerCells.swift +++ b/AltStore/App Detail/AppContentViewControllerCells.swift @@ -8,7 +8,7 @@ import UIKit -class PermissionCollectionViewCell: UICollectionViewCell +final class PermissionCollectionViewCell: UICollectionViewCell { @IBOutlet var button: UIButton! @IBOutlet var textLabel: UILabel! @@ -29,7 +29,7 @@ class PermissionCollectionViewCell: UICollectionViewCell } } -class AppContentTableViewCell: UITableViewCell +final class AppContentTableViewCell: UITableViewCell { override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize { diff --git a/AltStore/App Detail/AppViewController.swift b/AltStore/App Detail/AppViewController.swift index ccc6b4eb..238b90b8 100644 --- a/AltStore/App Detail/AppViewController.swift +++ b/AltStore/App Detail/AppViewController.swift @@ -13,7 +13,7 @@ import Roxas import Nuke -class AppViewController: UIViewController +final class AppViewController: UIViewController { var app: StoreApp! @@ -352,7 +352,7 @@ class AppViewController: UIViewController extension AppViewController { - class func makeAppViewController(app: StoreApp) -> AppViewController + final class func makeAppViewController(app: StoreApp) -> AppViewController { let storyboard = UIStoryboard(name: "Main", bundle: nil) diff --git a/AltStore/App Detail/PermissionPopoverViewController.swift b/AltStore/App Detail/PermissionPopoverViewController.swift index 7c3b1f1d..52174a68 100644 --- a/AltStore/App Detail/PermissionPopoverViewController.swift +++ b/AltStore/App Detail/PermissionPopoverViewController.swift @@ -10,7 +10,7 @@ import UIKit import AltStoreCore -class PermissionPopoverViewController: UIViewController +final class PermissionPopoverViewController: UIViewController { var permission: AppPermission! diff --git a/AltStore/App IDs/AppIDsViewController.swift b/AltStore/App IDs/AppIDsViewController.swift index d5ab49ab..1cd764b4 100644 --- a/AltStore/App IDs/AppIDsViewController.swift +++ b/AltStore/App IDs/AppIDsViewController.swift @@ -11,7 +11,7 @@ import UIKit import AltStoreCore import Roxas -class AppIDsViewController: UICollectionViewController +final class AppIDsViewController: UICollectionViewController { private lazy var dataSource = self.makeDataSource() diff --git a/AltStore/AppDelegate.swift b/AltStore/AppDelegate.swift index bd498aed..34e1b073 100644 --- a/AltStore/AppDelegate.swift +++ b/AltStore/AppDelegate.swift @@ -30,7 +30,7 @@ extension AppDelegate } @UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { +final class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? diff --git a/AltStore/Authentication/AuthenticationViewController.swift b/AltStore/Authentication/AuthenticationViewController.swift index bff72f06..fad4bead 100644 --- a/AltStore/Authentication/AuthenticationViewController.swift +++ b/AltStore/Authentication/AuthenticationViewController.swift @@ -10,7 +10,7 @@ import UIKit import AltSign -class AuthenticationViewController: UIViewController +final class AuthenticationViewController: UIViewController { var authenticationHandler: ((String, String, @escaping (Result<(ALTAccount, ALTAppleAPISession), Error>) -> Void) -> Void)? var completionHandler: (((ALTAccount, ALTAppleAPISession, String)?) -> Void)? diff --git a/AltStore/Authentication/InstructionsViewController.swift b/AltStore/Authentication/InstructionsViewController.swift index 0a37f2be..dc50eca5 100644 --- a/AltStore/Authentication/InstructionsViewController.swift +++ b/AltStore/Authentication/InstructionsViewController.swift @@ -8,7 +8,7 @@ import UIKit -class InstructionsViewController: UIViewController +final class InstructionsViewController: UIViewController { var completionHandler: (() -> Void)? diff --git a/AltStore/Authentication/RefreshAltStoreViewController.swift b/AltStore/Authentication/RefreshAltStoreViewController.swift index 94c5ccb9..cf430d2f 100644 --- a/AltStore/Authentication/RefreshAltStoreViewController.swift +++ b/AltStore/Authentication/RefreshAltStoreViewController.swift @@ -12,7 +12,7 @@ import AltStoreCore import AltSign import Roxas -class RefreshAltStoreViewController: UIViewController +final class RefreshAltStoreViewController: UIViewController { var context: AuthenticatedOperationContext! diff --git a/AltStore/Authentication/SelectTeamViewController.swift b/AltStore/Authentication/SelectTeamViewController.swift index 822dc945..d42f425c 100644 --- a/AltStore/Authentication/SelectTeamViewController.swift +++ b/AltStore/Authentication/SelectTeamViewController.swift @@ -14,7 +14,7 @@ import IntentsUI import AltSign -class SelectTeamViewController: UITableViewController +final class SelectTeamViewController: UITableViewController { public var teams: [ALTTeam]? public var completionHandler: ((Result) -> Void)? diff --git a/AltStore/Browse/BrowseCollectionViewCell.swift b/AltStore/Browse/BrowseCollectionViewCell.swift index 07fae19c..2eafc1d4 100644 --- a/AltStore/Browse/BrowseCollectionViewCell.swift +++ b/AltStore/Browse/BrowseCollectionViewCell.swift @@ -12,7 +12,7 @@ import Roxas import Nuke -@objc class BrowseCollectionViewCell: UICollectionViewCell +@objc final class BrowseCollectionViewCell: UICollectionViewCell { var imageURLs: [URL] = [] { didSet { diff --git a/AltStore/Components/AppIconImageView.swift b/AltStore/Components/AppIconImageView.swift index 08371e8a..ccb207d8 100644 --- a/AltStore/Components/AppIconImageView.swift +++ b/AltStore/Components/AppIconImageView.swift @@ -8,7 +8,7 @@ import UIKit -class AppIconImageView: UIImageView +final class AppIconImageView: UIImageView { override func awakeFromNib() { diff --git a/AltStore/Components/BackgroundTaskManager.swift b/AltStore/Components/BackgroundTaskManager.swift index db44eb0a..5ab54b33 100644 --- a/AltStore/Components/BackgroundTaskManager.swift +++ b/AltStore/Components/BackgroundTaskManager.swift @@ -8,7 +8,7 @@ import AVFoundation -class BackgroundTaskManager +final class BackgroundTaskManager { static let shared = BackgroundTaskManager() diff --git a/AltStore/Components/BannerCollectionViewCell.swift b/AltStore/Components/BannerCollectionViewCell.swift index a478940b..a1a810a8 100644 --- a/AltStore/Components/BannerCollectionViewCell.swift +++ b/AltStore/Components/BannerCollectionViewCell.swift @@ -8,7 +8,7 @@ import UIKit -class BannerCollectionViewCell: UICollectionViewCell +final class BannerCollectionViewCell: UICollectionViewCell { private(set) var errorBadge: UIView? @IBOutlet private(set) var bannerView: AppBannerView! diff --git a/AltStore/Components/Button.swift b/AltStore/Components/Button.swift index 7963c2cf..02f43840 100644 --- a/AltStore/Components/Button.swift +++ b/AltStore/Components/Button.swift @@ -8,7 +8,7 @@ import UIKit -class Button: UIButton +final class Button: UIButton { override var intrinsicContentSize: CGSize { var size = super.intrinsicContentSize diff --git a/AltStore/Components/CollapsingTextView.swift b/AltStore/Components/CollapsingTextView.swift index 656a8fcb..be966c54 100644 --- a/AltStore/Components/CollapsingTextView.swift +++ b/AltStore/Components/CollapsingTextView.swift @@ -8,7 +8,7 @@ import UIKit -class CollapsingTextView: UITextView +final class CollapsingTextView: UITextView { var isCollapsed = true { didSet { diff --git a/AltStore/Components/ForwardingNavigationController.swift b/AltStore/Components/ForwardingNavigationController.swift index 6af0f806..554bb728 100644 --- a/AltStore/Components/ForwardingNavigationController.swift +++ b/AltStore/Components/ForwardingNavigationController.swift @@ -8,7 +8,7 @@ import UIKit -class ForwardingNavigationController: UINavigationController +final class ForwardingNavigationController: UINavigationController { override var childForStatusBarStyle: UIViewController? { return self.topViewController diff --git a/AltStore/Components/NavigationBar.swift b/AltStore/Components/NavigationBar.swift index a57a2599..beb46fac 100644 --- a/AltStore/Components/NavigationBar.swift +++ b/AltStore/Components/NavigationBar.swift @@ -10,7 +10,7 @@ import UIKit import Roxas -class NavigationBar: UINavigationBar +final class NavigationBar: UINavigationBar { @IBInspectable var automaticallyAdjustsItemPositions: Bool = true diff --git a/AltStore/Components/PillButton.swift b/AltStore/Components/PillButton.swift index 04da7992..3527fe02 100644 --- a/AltStore/Components/PillButton.swift +++ b/AltStore/Components/PillButton.swift @@ -8,7 +8,7 @@ import UIKit -class PillButton: UIButton +final class PillButton: UIButton { override var accessibilityValue: String? { get { diff --git a/AltStore/Components/ToastView.swift b/AltStore/Components/ToastView.swift index b58c5dfa..6670efbd 100644 --- a/AltStore/Components/ToastView.swift +++ b/AltStore/Components/ToastView.swift @@ -16,7 +16,7 @@ extension TimeInterval static let longToastViewDuration = 8.0 } -class ToastView: RSTToastView +final class ToastView: RSTToastView { var preferredDuration: TimeInterval diff --git a/AltStore/Intents/IntentHandler.swift b/AltStore/Intents/IntentHandler.swift index 4a11e640..cad45e75 100644 --- a/AltStore/Intents/IntentHandler.swift +++ b/AltStore/Intents/IntentHandler.swift @@ -11,7 +11,7 @@ import Foundation import AltStoreCore @available(iOS 14, *) -class IntentHandler: NSObject, RefreshAllIntentHandling +final class IntentHandler: NSObject, RefreshAllIntentHandling { private let queue = DispatchQueue(label: "io.altstore.IntentHandler") diff --git a/AltStore/LaunchViewController.swift b/AltStore/LaunchViewController.swift index 5bf3eb4a..4bbc1811 100644 --- a/AltStore/LaunchViewController.swift +++ b/AltStore/LaunchViewController.swift @@ -14,7 +14,7 @@ import minimuxer import AltStoreCore import UniformTypeIdentifiers -class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDelegate +final class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDelegate { private var didFinishLaunching = false diff --git a/AltStore/Managing Apps/AppManager.swift b/AltStore/Managing Apps/AppManager.swift index f3c6acd4..d85fa339 100644 --- a/AltStore/Managing Apps/AppManager.swift +++ b/AltStore/Managing Apps/AppManager.swift @@ -28,7 +28,7 @@ extension AppManager } @available(iOS 13, *) -class AppManagerPublisher: ObservableObject +final class AppManagerPublisher: ObservableObject { @Published fileprivate(set) var installationProgress = [String: Progress]() @@ -42,7 +42,7 @@ private func ==(lhs: OperatingSystemVersion, rhs: OperatingSystemVersion) -> Boo return (lhs.majorVersion == rhs.majorVersion && lhs.minorVersion == rhs.minorVersion && lhs.patchVersion == rhs.patchVersion) } -class AppManager +final class AppManager { static let shared = AppManager() @@ -664,7 +664,7 @@ extension AppManager @available(iOS 14, *) func enableJIT(for installedApp: InstalledApp, completionHandler: @escaping (Result) -> Void) { - class Context: OperationContext, EnableJITContext + final class Context: OperationContext, EnableJITContext { var installedApp: InstalledApp? } @@ -684,7 +684,7 @@ extension AppManager @available(iOS 14.0, *) func patch(resignedApp: ALTApplication, presentingViewController: UIViewController, context authContext: AuthenticatedOperationContext, completionHandler: @escaping (Result) -> Void) -> PatchAppOperation { - class Context: InstallAppOperationContext, PatchAppContext + final class Context: InstallAppOperationContext, PatchAppContext { } diff --git a/AltStore/My Apps/InstalledAppsCollectionHeaderView.swift b/AltStore/My Apps/InstalledAppsCollectionHeaderView.swift index b3564e9e..519dcfe6 100644 --- a/AltStore/My Apps/InstalledAppsCollectionHeaderView.swift +++ b/AltStore/My Apps/InstalledAppsCollectionHeaderView.swift @@ -8,7 +8,7 @@ import UIKit -class InstalledAppsCollectionHeaderView: UICollectionReusableView +final class InstalledAppsCollectionHeaderView: UICollectionReusableView { let textLabel: UILabel let button: UIButton diff --git a/AltStore/My Apps/MyAppsComponents.swift b/AltStore/My Apps/MyAppsComponents.swift index a01090ce..8801b574 100644 --- a/AltStore/My Apps/MyAppsComponents.swift +++ b/AltStore/My Apps/MyAppsComponents.swift @@ -9,7 +9,7 @@ import UIKit import Roxas -class InstalledAppCollectionViewCell: UICollectionViewCell +final class InstalledAppCollectionViewCell: UICollectionViewCell { private(set) var deactivateBadge: UIView? @@ -55,13 +55,13 @@ class InstalledAppCollectionViewCell: UICollectionViewCell } } -class InstalledAppsCollectionFooterView: UICollectionReusableView +final class InstalledAppsCollectionFooterView: UICollectionReusableView { @IBOutlet var textLabel: UILabel! @IBOutlet var button: UIButton! } -class NoUpdatesCollectionViewCell: UICollectionViewCell +final class NoUpdatesCollectionViewCell: UICollectionViewCell { @IBOutlet var blurView: UIVisualEffectView! @@ -73,7 +73,7 @@ class NoUpdatesCollectionViewCell: UICollectionViewCell } } -class UpdatesCollectionHeaderView: UICollectionReusableView +final class UpdatesCollectionHeaderView: UICollectionReusableView { let button = PillButton(type: .system) diff --git a/AltStore/My Apps/MyAppsViewController.swift b/AltStore/My Apps/MyAppsViewController.swift index 03d65be0..9f968e16 100644 --- a/AltStore/My Apps/MyAppsViewController.swift +++ b/AltStore/My Apps/MyAppsViewController.swift @@ -30,7 +30,7 @@ extension MyAppsViewController } } -class MyAppsViewController: UICollectionViewController +final class MyAppsViewController: UICollectionViewController { private let coordinator = NSFileCoordinator() private let operationQueue = OperationQueue() diff --git a/AltStore/My Apps/UpdateCollectionViewCell.swift b/AltStore/My Apps/UpdateCollectionViewCell.swift index beecafdd..b9c92791 100644 --- a/AltStore/My Apps/UpdateCollectionViewCell.swift +++ b/AltStore/My Apps/UpdateCollectionViewCell.swift @@ -17,7 +17,7 @@ extension UpdateCollectionViewCell } } -@objc class UpdateCollectionViewCell: UICollectionViewCell +@objc final class UpdateCollectionViewCell: UICollectionViewCell { var mode: Mode = .expanded { didSet { diff --git a/AltStore/Operations/AuthenticationOperation.swift b/AltStore/Operations/AuthenticationOperation.swift index c787ffdc..af510de2 100644 --- a/AltStore/Operations/AuthenticationOperation.swift +++ b/AltStore/Operations/AuthenticationOperation.swift @@ -34,7 +34,7 @@ enum AuthenticationError: LocalizedError } @objc(AuthenticationOperation) -class AuthenticationOperation: ResultOperation<(ALTTeam, ALTCertificate, ALTAppleAPISession)> +final class AuthenticationOperation: ResultOperation<(ALTTeam, ALTCertificate, ALTAppleAPISession)> { let context: AuthenticatedOperationContext diff --git a/AltStore/Operations/BackgroundRefreshAppsOperation.swift b/AltStore/Operations/BackgroundRefreshAppsOperation.swift index 3d0fd6a4..0b3aa209 100644 --- a/AltStore/Operations/BackgroundRefreshAppsOperation.swift +++ b/AltStore/Operations/BackgroundRefreshAppsOperation.swift @@ -51,7 +51,7 @@ private let ReceivedApplicationState: @convention(c) (CFNotificationCenter?, Uns } @objc(BackgroundRefreshAppsOperation) -class BackgroundRefreshAppsOperation: ResultOperation<[String: Result]> +final class BackgroundRefreshAppsOperation: ResultOperation<[String: Result]> { let installedApps: [InstalledApp] private let managedObjectContext: NSManagedObjectContext diff --git a/AltStore/Operations/DeactivateAppOperation.swift b/AltStore/Operations/DeactivateAppOperation.swift index 3dd11e5d..e96d1fee 100644 --- a/AltStore/Operations/DeactivateAppOperation.swift +++ b/AltStore/Operations/DeactivateAppOperation.swift @@ -14,7 +14,7 @@ import Roxas import minimuxer @objc(DeactivateAppOperation) -class DeactivateAppOperation: ResultOperation +final class DeactivateAppOperation: ResultOperation { let app: InstalledApp let context: OperationContext diff --git a/AltStore/Operations/DownloadAppOperation.swift b/AltStore/Operations/DownloadAppOperation.swift index c386bb35..83820388 100644 --- a/AltStore/Operations/DownloadAppOperation.swift +++ b/AltStore/Operations/DownloadAppOperation.swift @@ -30,7 +30,7 @@ private extension DownloadAppOperation } @objc(DownloadAppOperation) -class DownloadAppOperation: ResultOperation +final class DownloadAppOperation: ResultOperation { let app: AppProtocol let context: AppOperationContext diff --git a/AltStore/Operations/EnableJITOperation.swift b/AltStore/Operations/EnableJITOperation.swift index da4da7da..f89296bf 100644 --- a/AltStore/Operations/EnableJITOperation.swift +++ b/AltStore/Operations/EnableJITOperation.swift @@ -21,7 +21,7 @@ protocol EnableJITContext } @available(iOS 14, *) -class EnableJITOperation: ResultOperation +final class EnableJITOperation: ResultOperation { let context: Context diff --git a/AltStore/Operations/FetchAnisetteDataOperation.swift b/AltStore/Operations/FetchAnisetteDataOperation.swift index cd652722..4a121751 100644 --- a/AltStore/Operations/FetchAnisetteDataOperation.swift +++ b/AltStore/Operations/FetchAnisetteDataOperation.swift @@ -13,7 +13,7 @@ import AltSign import Roxas @objc(FetchAnisetteDataOperation) -class FetchAnisetteDataOperation: ResultOperation +final class FetchAnisetteDataOperation: ResultOperation { let context: OperationContext diff --git a/AltStore/Operations/FetchAppIDsOperation.swift b/AltStore/Operations/FetchAppIDsOperation.swift index b3816428..4f75c9e7 100644 --- a/AltStore/Operations/FetchAppIDsOperation.swift +++ b/AltStore/Operations/FetchAppIDsOperation.swift @@ -13,7 +13,7 @@ import AltSign import Roxas @objc(FetchAppIDsOperation) -class FetchAppIDsOperation: ResultOperation<([AppID], NSManagedObjectContext)> +final class FetchAppIDsOperation: ResultOperation<([AppID], NSManagedObjectContext)> { let context: AuthenticatedOperationContext let managedObjectContext: NSManagedObjectContext diff --git a/AltStore/Operations/FetchProvisioningProfilesOperation.swift b/AltStore/Operations/FetchProvisioningProfilesOperation.swift index 3ed6ad82..e7b0eb30 100644 --- a/AltStore/Operations/FetchProvisioningProfilesOperation.swift +++ b/AltStore/Operations/FetchProvisioningProfilesOperation.swift @@ -13,7 +13,7 @@ import AltSign import Roxas @objc(FetchProvisioningProfilesOperation) -class FetchProvisioningProfilesOperation: ResultOperation<[String: ALTProvisioningProfile]> +final class FetchProvisioningProfilesOperation: ResultOperation<[String: ALTProvisioningProfile]> { let context: AppOperationContext diff --git a/AltStore/Operations/FetchSourceOperation.swift b/AltStore/Operations/FetchSourceOperation.swift index 9492503d..443cd037 100644 --- a/AltStore/Operations/FetchSourceOperation.swift +++ b/AltStore/Operations/FetchSourceOperation.swift @@ -13,7 +13,7 @@ import AltStoreCore import Roxas @objc(FetchSourceOperation) -class FetchSourceOperation: ResultOperation +final class FetchSourceOperation: ResultOperation { let sourceURL: URL let managedObjectContext: NSManagedObjectContext diff --git a/AltStore/Operations/FetchTrustedSourcesOperation.swift b/AltStore/Operations/FetchTrustedSourcesOperation.swift index 1ef8c3eb..9fced831 100644 --- a/AltStore/Operations/FetchTrustedSourcesOperation.swift +++ b/AltStore/Operations/FetchTrustedSourcesOperation.swift @@ -32,7 +32,7 @@ extension FetchTrustedSourcesOperation } } -class FetchTrustedSourcesOperation: ResultOperation<[FetchTrustedSourcesOperation.TrustedSource]> +final class FetchTrustedSourcesOperation: ResultOperation<[FetchTrustedSourcesOperation.TrustedSource]> { override func main() { diff --git a/AltStore/Operations/InstallAppOperation.swift b/AltStore/Operations/InstallAppOperation.swift index deaf8a50..f10c1272 100644 --- a/AltStore/Operations/InstallAppOperation.swift +++ b/AltStore/Operations/InstallAppOperation.swift @@ -13,7 +13,7 @@ import AltSign import Roxas @objc(InstallAppOperation) -class InstallAppOperation: ResultOperation +final class InstallAppOperation: ResultOperation { let context: InstallAppOperationContext diff --git a/AltStore/Operations/OperationContexts.swift b/AltStore/Operations/OperationContexts.swift index e18361d6..e60178b3 100644 --- a/AltStore/Operations/OperationContexts.swift +++ b/AltStore/Operations/OperationContexts.swift @@ -38,7 +38,7 @@ class OperationContext } } -class AuthenticatedOperationContext: OperationContext +final class AuthenticatedOperationContext: OperationContext { var session: ALTAppleAPISession? diff --git a/AltStore/Operations/Patch App/PatchAppOperation.swift b/AltStore/Operations/Patch App/PatchAppOperation.swift index af724e1e..0d06f6b8 100644 --- a/AltStore/Operations/Patch App/PatchAppOperation.swift +++ b/AltStore/Operations/Patch App/PatchAppOperation.swift @@ -52,7 +52,7 @@ private struct OTAUpdate } @available(iOS 14, *) -class PatchAppOperation: ResultOperation +final class PatchAppOperation: ResultOperation { let context: PatchAppContext diff --git a/AltStore/Operations/Patch App/PatchViewController.swift b/AltStore/Operations/Patch App/PatchViewController.swift index a20b2fa8..9e7afec9 100644 --- a/AltStore/Operations/Patch App/PatchViewController.swift +++ b/AltStore/Operations/Patch App/PatchViewController.swift @@ -29,7 +29,7 @@ extension PatchViewController } @available(iOS 14.0, *) -class PatchViewController: UIViewController +final class PatchViewController: UIViewController { var patchApp: AnyApp? var installedApp: InstalledApp? diff --git a/AltStore/Operations/RefreshAppOperation.swift b/AltStore/Operations/RefreshAppOperation.swift index 7da13306..084e281c 100644 --- a/AltStore/Operations/RefreshAppOperation.swift +++ b/AltStore/Operations/RefreshAppOperation.swift @@ -14,7 +14,7 @@ import Roxas import minimuxer @objc(RefreshAppOperation) -class RefreshAppOperation: ResultOperation +final class RefreshAppOperation: ResultOperation { let context: AppOperationContext diff --git a/AltStore/Operations/RefreshGroup.swift b/AltStore/Operations/RefreshGroup.swift index 01d6c965..27406257 100644 --- a/AltStore/Operations/RefreshGroup.swift +++ b/AltStore/Operations/RefreshGroup.swift @@ -12,7 +12,7 @@ import CoreData import AltStoreCore import AltSign -class RefreshGroup: NSObject +final class RefreshGroup: NSObject { let context: AuthenticatedOperationContext let progress = Progress.discreteProgress(totalUnitCount: 0) diff --git a/AltStore/Operations/RemoveAppBackupOperation.swift b/AltStore/Operations/RemoveAppBackupOperation.swift index 6e40b72d..24df7ba2 100644 --- a/AltStore/Operations/RemoveAppBackupOperation.swift +++ b/AltStore/Operations/RemoveAppBackupOperation.swift @@ -9,7 +9,7 @@ import Foundation @objc(RemoveAppBackupOperation) -class RemoveAppBackupOperation: ResultOperation +final class RemoveAppBackupOperation: ResultOperation { let context: InstallAppOperationContext diff --git a/AltStore/Operations/RemoveAppOperation.swift b/AltStore/Operations/RemoveAppOperation.swift index b7a4c150..6ec3cba4 100644 --- a/AltStore/Operations/RemoveAppOperation.swift +++ b/AltStore/Operations/RemoveAppOperation.swift @@ -12,7 +12,7 @@ import AltStoreCore import minimuxer @objc(RemoveAppOperation) -class RemoveAppOperation: ResultOperation +final class RemoveAppOperation: ResultOperation { let context: InstallAppOperationContext diff --git a/AltStore/Operations/ResignAppOperation.swift b/AltStore/Operations/ResignAppOperation.swift index add08658..8be28221 100644 --- a/AltStore/Operations/ResignAppOperation.swift +++ b/AltStore/Operations/ResignAppOperation.swift @@ -13,7 +13,7 @@ import AltStoreCore import AltSign @objc(ResignAppOperation) -class ResignAppOperation: ResultOperation +final class ResignAppOperation: ResultOperation { let context: InstallAppOperationContext diff --git a/AltStore/Operations/SendAppOperation.swift b/AltStore/Operations/SendAppOperation.swift index 35933b90..fb239ba1 100644 --- a/AltStore/Operations/SendAppOperation.swift +++ b/AltStore/Operations/SendAppOperation.swift @@ -11,7 +11,7 @@ import Network import AltStoreCore @objc(SendAppOperation) -class SendAppOperation: ResultOperation<()> +final class SendAppOperation: ResultOperation<()> { let context: InstallAppOperationContext diff --git a/AltStore/Operations/UpdatePatronsOperation.swift b/AltStore/Operations/UpdatePatronsOperation.swift index 54000883..8e4064b8 100644 --- a/AltStore/Operations/UpdatePatronsOperation.swift +++ b/AltStore/Operations/UpdatePatronsOperation.swift @@ -30,7 +30,7 @@ extension UpdatePatronsOperation } } -class UpdatePatronsOperation: ResultOperation +final class UpdatePatronsOperation: ResultOperation { let context: NSManagedObjectContext diff --git a/AltStore/Operations/VerifyAppOperation.swift b/AltStore/Operations/VerifyAppOperation.swift index 1daa92b0..c595d52f 100644 --- a/AltStore/Operations/VerifyAppOperation.swift +++ b/AltStore/Operations/VerifyAppOperation.swift @@ -55,7 +55,7 @@ enum VerificationError: ALTLocalizedError } @objc(VerifyAppOperation) -class VerifyAppOperation: ResultOperation +final class VerifyAppOperation: ResultOperation { let context: AppOperationContext var verificationHandler: ((VerificationError) -> Bool)? diff --git a/AltStore/SceneDelegate.swift b/AltStore/SceneDelegate.swift index 938b895d..c195f3ea 100644 --- a/AltStore/SceneDelegate.swift +++ b/AltStore/SceneDelegate.swift @@ -11,7 +11,7 @@ import AltStoreCore import EmotionalDamage @available(iOS 13, *) -class SceneDelegate: UIResponder, UIWindowSceneDelegate +final class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? diff --git a/AltStore/Settings/Error Log/ErrorLogTableViewCell.swift b/AltStore/Settings/Error Log/ErrorLogTableViewCell.swift index 5fa63551..71b67b88 100644 --- a/AltStore/Settings/Error Log/ErrorLogTableViewCell.swift +++ b/AltStore/Settings/Error Log/ErrorLogTableViewCell.swift @@ -9,7 +9,7 @@ import UIKit @objc(ErrorLogTableViewCell) -class ErrorLogTableViewCell: UITableViewCell +final class ErrorLogTableViewCell: UITableViewCell { @IBOutlet var appIconImageView: AppIconImageView! diff --git a/AltStore/Settings/Error Log/ErrorLogViewController.swift b/AltStore/Settings/Error Log/ErrorLogViewController.swift index c0f7fa27..86d84e66 100644 --- a/AltStore/Settings/Error Log/ErrorLogViewController.swift +++ b/AltStore/Settings/Error Log/ErrorLogViewController.swift @@ -14,7 +14,7 @@ import Roxas import Nuke -class ErrorLogViewController: UITableViewController +final class ErrorLogViewController: UITableViewController { private lazy var dataSource = self.makeDataSource() private var expandedErrorIDs = Set() diff --git a/AltStore/Settings/InsetGroupTableViewCell.swift b/AltStore/Settings/InsetGroupTableViewCell.swift index 02760c32..47a4e887 100644 --- a/AltStore/Settings/InsetGroupTableViewCell.swift +++ b/AltStore/Settings/InsetGroupTableViewCell.swift @@ -19,7 +19,7 @@ extension InsetGroupTableViewCell } } -class InsetGroupTableViewCell: UITableViewCell +final class InsetGroupTableViewCell: UITableViewCell { #if !TARGET_INTERFACE_BUILDER @IBInspectable var style: Style = .single { diff --git a/AltStore/Settings/LicensesViewController.swift b/AltStore/Settings/LicensesViewController.swift index 66b50736..d6ffc6ff 100644 --- a/AltStore/Settings/LicensesViewController.swift +++ b/AltStore/Settings/LicensesViewController.swift @@ -8,7 +8,7 @@ import UIKit -class LicensesViewController: UIViewController +final class LicensesViewController: UIViewController { private var _didAppear = false diff --git a/AltStore/Settings/PatreonComponents.swift b/AltStore/Settings/PatreonComponents.swift index d0d4a86d..4f2ec8ea 100644 --- a/AltStore/Settings/PatreonComponents.swift +++ b/AltStore/Settings/PatreonComponents.swift @@ -8,12 +8,12 @@ import UIKit -class PatronCollectionViewCell: UICollectionViewCell +final class PatronCollectionViewCell: UICollectionViewCell { @IBOutlet var textLabel: UILabel! } -class PatronsHeaderView: UICollectionReusableView +final class PatronsHeaderView: UICollectionReusableView { let textLabel = UILabel() @@ -31,7 +31,7 @@ class PatronsHeaderView: UICollectionReusableView } } -class PatronsFooterView: UICollectionReusableView +final class PatronsFooterView: UICollectionReusableView { let button = UIButton(type: .system) @@ -53,7 +53,7 @@ class PatronsFooterView: UICollectionReusableView } } -class AboutPatreonHeaderView: UICollectionReusableView +final class AboutPatreonHeaderView: UICollectionReusableView { @IBOutlet var supportButton: UIButton! @IBOutlet var accountButton: UIButton! diff --git a/AltStore/Settings/PatreonViewController.swift b/AltStore/Settings/PatreonViewController.swift index 6b1be872..12c82f73 100644 --- a/AltStore/Settings/PatreonViewController.swift +++ b/AltStore/Settings/PatreonViewController.swift @@ -22,7 +22,7 @@ extension PatreonViewController } } -class PatreonViewController: UICollectionViewController +final class PatreonViewController: UICollectionViewController { private lazy var dataSource = self.makeDataSource() private lazy var patronsDataSource = self.makePatronsDataSource() diff --git a/AltStore/Settings/RefreshAttemptsViewController.swift b/AltStore/Settings/RefreshAttemptsViewController.swift index cd048907..d00a834d 100644 --- a/AltStore/Settings/RefreshAttemptsViewController.swift +++ b/AltStore/Settings/RefreshAttemptsViewController.swift @@ -12,14 +12,14 @@ import AltStoreCore import Roxas @objc(RefreshAttemptTableViewCell) -private class RefreshAttemptTableViewCell: UITableViewCell +private final class RefreshAttemptTableViewCell: UITableViewCell { @IBOutlet var successLabel: UILabel! @IBOutlet var dateLabel: UILabel! @IBOutlet var errorDescriptionLabel: UILabel! } -class RefreshAttemptsViewController: UITableViewController +final class RefreshAttemptsViewController: UITableViewController { private lazy var dataSource = self.makeDataSource() diff --git a/AltStore/Settings/SettingsHeaderFooterView.swift b/AltStore/Settings/SettingsHeaderFooterView.swift index aec7b2f7..89d1d4a6 100644 --- a/AltStore/Settings/SettingsHeaderFooterView.swift +++ b/AltStore/Settings/SettingsHeaderFooterView.swift @@ -10,7 +10,7 @@ import UIKit import Roxas -class SettingsHeaderFooterView: UITableViewHeaderFooterView +final class SettingsHeaderFooterView: UITableViewHeaderFooterView { @IBOutlet var primaryLabel: UILabel! @IBOutlet var secondaryLabel: UILabel! diff --git a/AltStore/Settings/SettingsViewController.swift b/AltStore/Settings/SettingsViewController.swift index 77a7ad28..9c45fdd8 100644 --- a/AltStore/Settings/SettingsViewController.swift +++ b/AltStore/Settings/SettingsViewController.swift @@ -57,7 +57,7 @@ extension SettingsViewController } } -class SettingsViewController: UITableViewController +final class SettingsViewController: UITableViewController { private var activeTeam: Team? diff --git a/AltStore/Sources/SourcesViewController.swift b/AltStore/Sources/SourcesViewController.swift index c1b62556..2b15c240 100644 --- a/AltStore/Sources/SourcesViewController.swift +++ b/AltStore/Sources/SourcesViewController.swift @@ -31,7 +31,7 @@ struct SourceError: LocalizedError } @objc(SourcesFooterView) -private class SourcesFooterView: TextCollectionReusableView +private final class SourcesFooterView: TextCollectionReusableView { @IBOutlet var activityIndicatorView: UIActivityIndicatorView! @IBOutlet var textView: UITextView! @@ -46,7 +46,7 @@ extension SourcesViewController } } -class SourcesViewController: UICollectionViewController +final class SourcesViewController: UICollectionViewController { var deepLinkSourceURL: URL? { didSet { diff --git a/AltStore/TabBarController.swift b/AltStore/TabBarController.swift index f1b9daa9..91263340 100644 --- a/AltStore/TabBarController.swift +++ b/AltStore/TabBarController.swift @@ -20,7 +20,7 @@ extension TabBarController } } -class TabBarController: UITabBarController +final class TabBarController: UITabBarController { private var initialSegue: (identifier: String, sender: Any?)? From d7df11636282f4254aa582186793e1897123edc7 Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 09:54:29 -0500 Subject: [PATCH 7/9] add workflow to attach builds to PR Signed-off-by: Joseph Mattello --- .github/workflows/attach_build_products.yml | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/attach_build_products.yml diff --git a/.github/workflows/attach_build_products.yml b/.github/workflows/attach_build_products.yml new file mode 100644 index 00000000..1a1ea691 --- /dev/null +++ b/.github/workflows/attach_build_products.yml @@ -0,0 +1,22 @@ +name: Add artifact links to pull request and related issues +on: + workflow_run: + workflows: [Pull Request SideStore build] + types: [completed] + +jobs: + artifacts-url-comments: + name: add artifact links to pull request and related issues job + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - name: add artifact links to pull request and related issues step + uses: tonyhallett/artifacts-url-comments@v1.1.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + prefix: Builds for this Pull Request are available at + suffix: Have a nice day. + format: name + addTo: pull + # addTo: pullandissues From c78a03d70f1a280ef3093b4336ee43ac0cb071fa Mon Sep 17 00:00:00 2001 From: Joseph Mattello Date: Wed, 4 Jan 2023 12:20:08 -0500 Subject: [PATCH 8/9] Add placeholder for minimux retries Signed-off-by: Joseph Mattello --- AltStore/LaunchViewController.swift | 10 ++++++++++ minimuxer/minimuxer.swift | 30 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/AltStore/LaunchViewController.swift b/AltStore/LaunchViewController.swift index 4bbc1811..25692f06 100644 --- a/AltStore/LaunchViewController.swift +++ b/AltStore/LaunchViewController.swift @@ -149,7 +149,17 @@ final class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDeleg func start_minimuxer_threads(_ pairing_file: String) { set_usbmuxd_socket() + #if false // Retries + var res = start_minimuxer(pairing_file: pairing_file) + var attempts = 10 + while (attempts != 0 && res != 0) { + print("start_minimuxer `res` != 0, retry #\(attempts)") + res = start_minimuxer(pairing_file: pairing_file) + attempts -= 1 + } + #else let res = start_minimuxer(pairing_file: pairing_file) + #endif if res != 0 { displayError("minimuxer failed to start. Incorrect arguments were passed.") } diff --git a/minimuxer/minimuxer.swift b/minimuxer/minimuxer.swift index d1afe1d8..fb024f63 100644 --- a/minimuxer/minimuxer.swift +++ b/minimuxer/minimuxer.swift @@ -27,7 +27,17 @@ public func set_usbmuxd_socket() { public func debug_app(app_id: String) throws -> Uhoh { let ai = NSString(string: app_id) let ai_pointer = UnsafeMutablePointer(mutating: ai.utf8String) + #if false // Retries + var res = minimuxer_debug_app(ai_pointer) + var attempts = 10 + while (attempts != 0 && res != 0) { + print("(JIT) ATTEMPTS: \(attempts)") + res = minimuxer_debug_app(ai_pointer) + attempts -= 1 + } + #else let res = minimuxer_debug_app(ai_pointer) + #endif if res != 0 { throw Uhoh.Bad(code: res) } @@ -38,7 +48,17 @@ public func install_provisioning_profile(plist: Data) throws -> Uhoh { let pls = String(decoding: plist, as: UTF8.self) print(pls) print(plist) + #if false // Retries + var res = minimuxer_install_provisioning_profile(x, UInt32(plist.count)) + var attempts = 10 + while (attempts != 0 && res != 0) { + print("(INSTALL) ATTEMPTS: \(attempts)") + res = minimuxer_install_provisioning_profile(x, UInt32(plist.count)) + attempts -= 1 + } + #else let x = plist.withUnsafeBytes { buf in UnsafeMutableRawPointer(mutating: buf) } + #endif let res = minimuxer_install_provisioning_profile(x, UInt32(plist.count)) if res != 0 { throw Uhoh.Bad(code: res) @@ -49,7 +69,17 @@ public func install_provisioning_profile(plist: Data) throws -> Uhoh { public func remove_provisioning_profile(id: String) throws -> Uhoh { let id_ns = NSString(string: id) let id_pointer = UnsafeMutablePointer(mutating: id_ns.utf8String) + #if false // Retries + var res = minimuxer_remove_provisioning_profile(id_pointer) + var attempts = 10 + while (attempts != 0 && res != 0) { + print("(REMOVE PROFILE) ATTEMPTS: \(attempts)") + res = minimuxer_remove_provisioning_profile(id_pointer) + attempts -= 1 + } + #else let res = minimuxer_remove_provisioning_profile(id_pointer) + #endif if res != 0 { throw Uhoh.Bad(code: res) } From cf521a92c04089ea856d1f93a076991f4e38b028 Mon Sep 17 00:00:00 2001 From: Jawshoeadan <62785552+jawshoeadan@users.noreply.github.com> Date: Wed, 4 Jan 2023 21:55:00 -0800 Subject: [PATCH 9/9] Update AltBackup.ipa --- AltStore/Resources/AltBackup.ipa | Bin 76221 -> 58302 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/AltStore/Resources/AltBackup.ipa b/AltStore/Resources/AltBackup.ipa index b35f6bea22c4922bfecf03d6f56228adf7c85367..2bba63eb0a36ddce92b7c3cdc18e6c4371be01e8 100644 GIT binary patch delta 51863 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 delta 69710 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 dl^0if`4=E(wD1a`R8Y<