Compare commits

..

9 Commits

Author SHA1 Message Date
Spidy123222
94ee08c718 Enable building for connect branch.
Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
2024-01-12 19:00:06 -08:00
Spidy123222
fd7dc94975 Swap to Connect Source
Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
2024-01-12 18:57:34 -08:00
naturecodevoid
b78707808d [skip ci] Remove me from feature report assignees
Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com>
2023-12-12 18:32:21 -08:00
naturecodevoid
d41518581a [skip ci] Remove me from bug report assignees
Signed-off-by: naturecodevoid <44983869+naturecodevoid@users.noreply.github.com>
2023-12-12 18:32:05 -08:00
Stern
4abbfe6142 [skip ci] ci: Update stable.yml
This removes workflow_dispatch as it was making the builds show as SideStore `develop`

Signed-off-by: Stern <xsternent@gmail.com>
2023-11-28 05:50:44 -05:00
Stern
dae813d80c Merge pull request #550 from SideStore/Add-description-for-idle
Add description on what disable idle timeout toggle + change add to Siri text for accuracy
2023-11-28 03:12:22 -05:00
Spidy123222
af89b178ad Change button text for adding Siri to refresh apps
Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
2023-11-27 23:39:20 -08:00
Spidy123222
8c269207fd add description on what disable idle timeout toggle
Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
2023-11-27 23:18:36 -08:00
junepark678
42ecd38517 bugfix(NoIdle): Fix slider not being set to correct value on load 2023-11-28 12:00:20 +09:00
14 changed files with 40 additions and 83 deletions

View File

@@ -2,8 +2,7 @@ name: Bug Report
description: Report a bug description: Report a bug
title: "[BUG] " title: "[BUG] "
labels: ["bug"] labels: ["bug"]
assignees: assignees: []
- naturecodevoid
body: body:
- type: markdown - type: markdown
attributes: attributes:

View File

@@ -2,8 +2,7 @@ name: Feature Request
description: Suggest a feature description: Suggest a feature
title: "[FEATURE REQUEST] " title: "[FEATURE REQUEST] "
labels: ["enhancement"] labels: ["enhancement"]
assignees: assignees: []
- naturecodevoid
body: body:
- type: markdown - type: markdown
attributes: attributes:

View File

@@ -2,7 +2,7 @@ name: Nightly SideStore build
on: on:
push: push:
branches: branches:
- develop - connect-develop
jobs: jobs:
build: build:

View File

@@ -3,7 +3,6 @@ on:
push: push:
tags: tags:
- '[0-9]+.[0-9]+.[0-9]+' # example: 1.0.0 - '[0-9]+.[0-9]+.[0-9]+' # example: 1.0.0
workflow_dispatch:
jobs: jobs:
build: build:

View File

@@ -78,7 +78,7 @@ private extension BrowseViewController
NSSortDescriptor(keyPath: \StoreApp.name, ascending: true), NSSortDescriptor(keyPath: \StoreApp.name, ascending: true),
NSSortDescriptor(keyPath: \StoreApp.bundleIdentifier, ascending: true)] NSSortDescriptor(keyPath: \StoreApp.bundleIdentifier, ascending: true)]
fetchRequest.returnsObjectsAsFaults = false fetchRequest.returnsObjectsAsFaults = false
fetchRequest.predicate = NSPredicate(format: "%K != %@", #keyPath(StoreApp.sourceIdentifier), Source.altStoreIdentifier) fetchRequest.predicate = NSPredicate(format: "%K != %@", #keyPath(StoreApp.bundleIdentifier), StoreApp.altstoreAppID)
let dataSource = RSTFetchedResultsCollectionViewPrefetchingDataSource<StoreApp, UIImage>(fetchRequest: fetchRequest, managedObjectContext: DatabaseManager.shared.viewContext) let dataSource = RSTFetchedResultsCollectionViewPrefetchingDataSource<StoreApp, UIImage>(fetchRequest: fetchRequest, managedObjectContext: DatabaseManager.shared.viewContext)
dataSource.cellConfigurationHandler = { (cell, app, indexPath) in dataSource.cellConfigurationHandler = { (cell, app, indexPath) in

View File

@@ -279,7 +279,7 @@
<rect key="frame" x="0.0" y="0.0" width="375" height="51"/> <rect key="frame" x="0.0" y="0.0" width="375" height="51"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Add to Siri…" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c6K-fI-CVr"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Allow Siri To Refresh Apps…" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c6K-fI-CVr">
<rect key="frame" x="30" y="15.5" width="100.5" height="20.5"/> <rect key="frame" x="30" y="15.5" width="100.5" height="20.5"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

View File

@@ -152,6 +152,7 @@ private extension SettingsViewController
} }
self.backgroundRefreshSwitch.isOn = UserDefaults.standard.isBackgroundRefreshEnabled self.backgroundRefreshSwitch.isOn = UserDefaults.standard.isBackgroundRefreshEnabled
self.noIdleTimeoutSwitch.isOn = UserDefaults.standard.isIdleTimeoutDisableEnabled
if self.isViewLoaded if self.isViewLoaded
{ {
@@ -203,7 +204,7 @@ private extension SettingsViewController
} }
else else
{ {
settingsHeaderFooterView.secondaryLabel.text = NSLocalizedString("Enable Background Refresh to automatically refresh apps in the background when connected to Wi-Fi.", comment: "") settingsHeaderFooterView.secondaryLabel.text = NSLocalizedString("Enable Background Refresh to automatically refresh apps in the background when connected to Wi-Fi. \n\nDisable the Idle Timeout toggle to allow SideStore to not let your device go to sleep during a refresh or install of any apps.", comment: "")
} }
case .instructions: case .instructions:

View File

@@ -103,7 +103,6 @@
<attribute name="externalURL" optional="YES" attributeType="URI"/> <attribute name="externalURL" optional="YES" attributeType="URI"/>
<attribute name="identifier" attributeType="String"/> <attribute name="identifier" attributeType="String"/>
<attribute name="imageURL" optional="YES" attributeType="URI"/> <attribute name="imageURL" optional="YES" attributeType="URI"/>
<attribute name="isDuplicate" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
<attribute name="isSilent" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES"/> <attribute name="isSilent" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES"/>
<attribute name="sortIndex" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES"/> <attribute name="sortIndex" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="sourceIdentifier" optional="YES" attributeType="String"/> <attribute name="sourceIdentifier" optional="YES" attributeType="String"/>

View File

@@ -222,7 +222,7 @@ private extension DatabaseManager
let storeApp: StoreApp let storeApp: StoreApp
if let app = StoreApp.first(satisfying: NSPredicate(format: "%K == %@ AND %K == %@", #keyPath(StoreApp.bundleIdentifier), StoreApp.altstoreAppID, #keyPath(StoreApp.sourceIdentifier), Source.altStoreIdentifier), in: context) if let app = StoreApp.first(satisfying: NSPredicate(format: "%K == %@", #keyPath(StoreApp.bundleIdentifier), StoreApp.altstoreAppID), in: context)
{ {
storeApp = app storeApp = app
} }

View File

@@ -108,10 +108,6 @@ public class InstalledApp: NSManagedObject, InstalledAppProtocol
public func update(resignedApp: ALTApplication, certificateSerialNumber: String?) public func update(resignedApp: ALTApplication, certificateSerialNumber: String?)
{ {
self.name = resignedApp.name self.name = resignedApp.name
if storeApp != nil {
// This might break things; maybe only do this if the bundle ID is SideStore's?
self.name = storeApp!.name // If we don't do this, the name will always be SideStore in My Apps, even when using beta/nightly
}
self.resignedBundleIdentifier = resignedApp.bundleIdentifier self.resignedBundleIdentifier = resignedApp.bundleIdentifier
self.version = resignedApp.version self.version = resignedApp.version
@@ -182,7 +178,7 @@ public extension InstalledApp
class func fetchAltStore(in context: NSManagedObjectContext) -> InstalledApp? class func fetchAltStore(in context: NSManagedObjectContext) -> InstalledApp?
{ {
let predicate = NSPredicate(format: "%K == %@ AND %K != nil AND %K == %@", #keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID, #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.storeApp.sourceIdentifier), Source.altStoreIdentifier) let predicate = NSPredicate(format: "%K == %@", #keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID)
print("Fetch 'AltStore' Predicate: \(String(describing: predicate))") print("Fetch 'AltStore' Predicate: \(String(describing: predicate))")
let altStore = InstalledApp.first(satisfying: predicate, in: context) let altStore = InstalledApp.first(satisfying: predicate, in: context)
return altStore return altStore

View File

@@ -32,15 +32,6 @@ public class NewsItem: NSManagedObject, Decodable, Fetchable
@NSManaged public var storeApp: StoreApp? @NSManaged public var storeApp: StoreApp?
@NSManaged public var source: Source? @NSManaged public var source: Source?
@objc public var isDuplicate: Bool {
if self.source == nil { return false }
// Hide news from sources that begin with the SideStore identifier, and aren't from the same source as the current SideStore source
if self.source!.identifier.starts(with: Bundle.Info.appbundleIdentifier) && self.source!.identifier != Source.altStoreIdentifier { return true }
return false
}
private enum CodingKeys: String, CodingKey private enum CodingKeys: String, CodingKey
{ {
case identifier case identifier
@@ -95,9 +86,6 @@ public extension NewsItem
{ {
@nonobjc class func fetchRequest() -> NSFetchRequest<NewsItem> @nonobjc class func fetchRequest() -> NSFetchRequest<NewsItem>
{ {
let fetchRequest = NSFetchRequest<NewsItem>(entityName: "NewsItem") return NSFetchRequest<NewsItem>(entityName: "NewsItem")
fetchRequest.predicate = NSPredicate(format: "%K == NO",
#keyPath(NewsItem.isDuplicate))
return fetchRequest
} }
} }

View File

@@ -11,37 +11,29 @@ import UIKit
public extension Source public extension Source
{ {
static var altStoreIdentifier: String { #if ALPHA
let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String static let altStoreIdentifier = Bundle.Info.appbundleIdentifier
#else
if appVersion != nil { static let altStoreIdentifier = Bundle.Info.appbundleIdentifier
if appVersion!.contains("beta") { #endif
return Bundle.Info.appbundleIdentifier + ".Beta"
}
if appVersion!.contains("nightly") {
return Bundle.Info.appbundleIdentifier + ".Nightly"
}
}
return Bundle.Info.appbundleIdentifier
}
static let altStoreSourceBaseURL = "https://apps.sidestore.io/" #if STAGING
static var altStoreSourceURL: URL { #if ALPHA
let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String static let altStoreSourceURL = URL(string: "https://connect.sidestore.io/")!
#else
if appVersion != nil { static let altStoreSourceURL = URL(string: "https://connect.sidestore.io/")!
if appVersion!.contains("beta") { #endif
return URL(string: altStoreSourceBaseURL + "beta")!
} #else
if appVersion!.contains("nightly") {
return URL(string: altStoreSourceBaseURL + "nightly")! #if ALPHA
} static let altStoreSourceURL = URL(string: "https://connect.sidestore.io/")!
} #else
static let altStoreSourceURL = URL(string: "https://connect.sidestore.io/")!
return URL(string: altStoreSourceBaseURL)! #endif
}
#endif
} }
public struct AppPermissionFeed: Codable { public struct AppPermissionFeed: Codable {

View File

@@ -343,28 +343,16 @@ public extension StoreApp
{ {
let app = StoreApp(context: context) let app = StoreApp(context: context)
app.name = "SideStore" app.name = "SideStore"
let currentAppVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
if currentAppVersion != nil {
if currentAppVersion!.contains("beta") {
app.name += " (Beta)"
}
if currentAppVersion!.contains("nightly") {
app.name += " (Nightly)"
}
}
app.bundleIdentifier = StoreApp.altstoreAppID app.bundleIdentifier = StoreApp.altstoreAppID
app.developerName = "SideStore Team" app.developerName = "Side Team"
app.localizedDescription = "SideStore is an alternative app store for non-jailbroken devices.\n\nSideStore allows you to sideload other .ipa files and apps from the Files app or via the SideStore Library." app.localizedDescription = "SideStore is an alternative App Store."
app.iconURL = URL(string: "https://sidestore.io/assets/icon.png")! app.iconURL = URL(string: "https://user-images.githubusercontent.com/705880/63392210-540c5980-c37b-11e9-968c-8742fc68ab2e.png")!
app.screenshotURLs = [] app.screenshotURLs = []
app.sourceIdentifier = Source.altStoreIdentifier app.sourceIdentifier = Source.altStoreIdentifier
let appVersion = AppVersion.makeAppVersion(version: "0.0.0", // this is set to the current app version later let appVersion = AppVersion.makeAppVersion(version: "0.3.0",
date: Date(), date: Date(),
downloadURL: URL(string: "https://sidestore.io")!, downloadURL: URL(string: "http://rileytestut.com")!,
size: 0, size: 0,
appBundleID: app.bundleIdentifier, appBundleID: app.bundleIdentifier,
sourceID: Source.altStoreIdentifier, sourceID: Source.altStoreIdentifier,
@@ -373,6 +361,10 @@ public extension StoreApp
print("makeAltStoreApp StoreApp: \(String(describing: app))") print("makeAltStoreApp StoreApp: \(String(describing: app))")
#if BETA
app.isBeta = true
#endif
return app return app
} }
} }

View File

@@ -4,14 +4,6 @@
{ {
"identifier": "io.sidestore.example" "identifier": "io.sidestore.example"
}, },
{
"identifier": "com.SideStore.SideStore",
"sourceURL": "https://apps.sidestore.io/"
},
{
"identifier": "com.SideStore.SideStore.Beta",
"sourceURL": "https://apps.sidestore.io/beta"
},
{ {
"identifier": "com.sidestoreapps.community", "identifier": "com.sidestoreapps.community",
"sourceURL": "https://community-apps.sidestore.io/sidecommunity.json" "sourceURL": "https://community-apps.sidestore.io/sidecommunity.json"