Main (#158)
* dwo (#132) * bug fixes (#127) * yeah @realdoomsboygaming fault * fixes * freaky ahh update --------- Co-authored-by: Seiike <122684677+Seeike@users.noreply.github.com> * opds * bug fixes around the downloads (#133) (#134) * yeah nice xcode * yeah fuck ts * yeah * ok this shit is really fucked then --------- Co-authored-by: Seiike <122684677+Seeike@users.noreply.github.com>
|
|
@ -35,4 +35,4 @@
|
|||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
|
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "darkmode.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"filename" : "lightmode.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024",
|
||||
"unassigned" : true
|
||||
},
|
||||
{
|
||||
"filename" : "tinting.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024",
|
||||
"unassigned" : true
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "preview.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 82 KiB |
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "original.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 54 KiB |
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "preview.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "preview.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 107 KiB |
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
104
Sora/Info.plist
|
|
@ -6,110 +6,6 @@
|
|||
<array>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
</array>
|
||||
<key>CFBundleIcons</key>
|
||||
<dict>
|
||||
<key>CFBundleAlternateIcons</key>
|
||||
<dict>
|
||||
<key>AppIcon_CiroChrome</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroChrome</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroGold</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroGold</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroGoldThree</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroGoldThree</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroGoldTwo</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroGoldTwo</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroPink</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroPink</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroPurple</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroPurple</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroRed</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroRed</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroRoseGold</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroRoseGold</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroSilver</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroSilver</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroSilverTwo</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroSilverTwo</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_CiroYellow</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_CiroYellow</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_Original</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_Original</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_Pixel</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_Pixel</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>AppIcon_SoraAlt</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>AppIcon_SoraAlt</string>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
|
|
|||
|
|
@ -1,69 +0,0 @@
|
|||
//
|
||||
// SettingsViewAlternateAppIconPicker.swift
|
||||
// Sulfur
|
||||
//
|
||||
// Created by Dominic on 20.04.25.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsViewAlternateAppIconPicker: View {
|
||||
@Binding var isPresented: Bool
|
||||
@AppStorage("currentAppIcon") private var currentAppIcon = "Default"
|
||||
|
||||
let icons: [(name: String, icon: String)] = [
|
||||
("Default", "Default"),
|
||||
("Original", "Original"),
|
||||
("Pixel", "Pixel")
|
||||
]
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Text("Select an App Icon")
|
||||
.font(.headline)
|
||||
.padding()
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
HStack(spacing: 20) {
|
||||
ForEach(icons, id: \.name) { icon in
|
||||
VStack {
|
||||
Image("AppIcon_\(icon.icon)_Preview", bundle: .main)
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(width: 60, height: 60)
|
||||
.cornerRadius(10)
|
||||
.shadow(radius: 6)
|
||||
.padding()
|
||||
.background(
|
||||
currentAppIcon == icon.name ? Color.accentColor.opacity(0.3) : Color.clear
|
||||
)
|
||||
.cornerRadius(10)
|
||||
.accessibilityLabel("Alternative App Icon")
|
||||
Text(icon.name)
|
||||
.font(.caption)
|
||||
.foregroundColor(currentAppIcon == icon.name ? .accentColor : .primary)
|
||||
}
|
||||
.accessibilityAddTraits(.isButton)
|
||||
.onTapGesture {
|
||||
currentAppIcon = icon.name
|
||||
setAppIcon(named: icon.icon)
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
}
|
||||
|
||||
private func setAppIcon(named iconName: String) {
|
||||
if UIApplication.shared.supportsAlternateIcons {
|
||||
UIApplication.shared.setAlternateIconName(iconName == "Default" ? nil : "AppIcon_\(iconName)", completionHandler: { error in
|
||||
if let error = error {
|
||||
Logger.shared.log("Failed to set alternate icon: \(error.localizedDescription)", type: "Error")
|
||||
isPresented = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -157,13 +157,11 @@ struct SettingsViewGeneral: View {
|
|||
@AppStorage("tmdbImageWidth") private var TMDBimageWidht: String = "original"
|
||||
@AppStorage("mediaColumnsPortrait") private var mediaColumnsPortrait: Int = 2
|
||||
@AppStorage("mediaColumnsLandscape") private var mediaColumnsLandscape: Int = 4
|
||||
@AppStorage("currentAppIcon") private var currentAppIcon = "Default"
|
||||
|
||||
private let metadataProvidersList = ["AniList", "TMDB"]
|
||||
private let TMDBimageWidhtList = ["300", "500", "780", "1280", "original"]
|
||||
private let sortOrderOptions = ["Ascending", "Descending"]
|
||||
@EnvironmentObject var settings: Settings
|
||||
@State private var showAppIconPicker = false
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
|
|
@ -182,28 +180,6 @@ struct SettingsViewGeneral: View {
|
|||
},
|
||||
selection: $settings.selectedAppearance
|
||||
)
|
||||
|
||||
VStack(spacing: 0) {
|
||||
HStack {
|
||||
Image(systemName: "app")
|
||||
.frame(width: 24, height: 24)
|
||||
.foregroundStyle(.primary)
|
||||
|
||||
Text("App Icon")
|
||||
.foregroundStyle(.primary)
|
||||
|
||||
Spacer()
|
||||
|
||||
Button(action: {
|
||||
showAppIconPicker = true
|
||||
}) {
|
||||
Text(currentAppIcon)
|
||||
.foregroundStyle(.gray)
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.vertical, 12)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection(
|
||||
|
|
@ -304,13 +280,5 @@ struct SettingsViewGeneral: View {
|
|||
}
|
||||
.navigationTitle("General")
|
||||
.scrollViewBottomPadding()
|
||||
.sheet(isPresented: $showAppIconPicker) {
|
||||
if #available(iOS 16.0, *) {
|
||||
SettingsViewAlternateAppIconPicker(isPresented: $showAppIconPicker)
|
||||
.presentationDetents([.height(200)])
|
||||
} else {
|
||||
SettingsViewAlternateAppIconPicker(isPresented: $showAppIconPicker)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
132AF1212D99951700A0140B /* JSController-Streams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132AF1202D99951700A0140B /* JSController-Streams.swift */; };
|
||||
132AF1232D9995C300A0140B /* JSController-Details.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132AF1222D9995C300A0140B /* JSController-Details.swift */; };
|
||||
132AF1252D9995F900A0140B /* JSController-Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132AF1242D9995F900A0140B /* JSController-Search.swift */; };
|
||||
132FC5B32DE31DAE009A80F7 /* SettingsViewAlternateAppIconPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132FC5B22DE31DAD009A80F7 /* SettingsViewAlternateAppIconPicker.swift */; };
|
||||
133D7C6E2D2BE2500075467E /* SoraApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C6D2D2BE2500075467E /* SoraApp.swift */; };
|
||||
133D7C702D2BE2500075467E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C6F2D2BE2500075467E /* ContentView.swift */; };
|
||||
133D7C722D2BE2520075467E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 133D7C712D2BE2520075467E /* Assets.xcassets */; };
|
||||
|
|
@ -124,7 +123,6 @@
|
|||
132AF1202D99951700A0140B /* JSController-Streams.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JSController-Streams.swift"; sourceTree = "<group>"; };
|
||||
132AF1222D9995C300A0140B /* JSController-Details.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JSController-Details.swift"; sourceTree = "<group>"; };
|
||||
132AF1242D9995F900A0140B /* JSController-Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JSController-Search.swift"; sourceTree = "<group>"; };
|
||||
132FC5B22DE31DAD009A80F7 /* SettingsViewAlternateAppIconPicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewAlternateAppIconPicker.swift; sourceTree = "<group>"; };
|
||||
133D7C6A2D2BE2500075467E /* Sulfur.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sulfur.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
133D7C6D2D2BE2500075467E /* SoraApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoraApp.swift; sourceTree = "<group>"; };
|
||||
133D7C6F2D2BE2500075467E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -359,7 +357,6 @@
|
|||
133D7C832D2BE2630075467E /* SettingsSubViews */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
132FC5B22DE31DAD009A80F7 /* SettingsViewAlternateAppIconPicker.swift */,
|
||||
1E9FF1D22D403E42008AC100 /* SettingsViewLoggerFilter.swift */,
|
||||
1399FAD32D3AB38C00E97C31 /* SettingsViewLogger.swift */,
|
||||
133D7C842D2BE2630075467E /* SettingsViewModule.swift */,
|
||||
|
|
@ -747,7 +744,6 @@
|
|||
13EA2BD52D32D97400C1EBD7 /* CustomPlayer.swift in Sources */,
|
||||
727220712DD642B100C2A4A2 /* JSController-StreamTypeDownload.swift in Sources */,
|
||||
727220722DD642B100C2A4A2 /* JSController+MP4Download.swift in Sources */,
|
||||
132FC5B32DE31DAE009A80F7 /* SettingsViewAlternateAppIconPicker.swift in Sources */,
|
||||
0402DA132DE7B5EC003BB42C /* SearchStateView.swift in Sources */,
|
||||
0402DA142DE7B5EC003BB42C /* SearchResultsGrid.swift in Sources */,
|
||||
0402DA152DE7B5EC003BB42C /* SearchComponents.swift in Sources */,
|
||||
|
|
@ -893,8 +889,7 @@
|
|||
133D7C792D2BE2520075467E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = "AppIcon_Original AppIcon_Pixel";
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon_Default;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = Sora/Sora.entitlements;
|
||||
|
|
@ -909,7 +904,6 @@
|
|||
INFOPLIST_FILE = Sora/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Sora;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment";
|
||||
INFOPLIST_KEY_NSCameraUsageDescription = "Sora may requires access to your device's camera.";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
|
|
@ -937,8 +931,7 @@
|
|||
133D7C7A2D2BE2520075467E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = "AppIcon_Original AppIcon_Pixel";
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon_Default;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = Sora/Sora.entitlements;
|
||||
|
|
@ -953,7 +946,6 @@
|
|||
INFOPLIST_FILE = Sora/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Sora;
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment";
|
||||
INFOPLIST_KEY_NSCameraUsageDescription = "Sora may requires access to your device's camera.";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
|
|
|
|||