From 253383516dedf1c2089c64bc08a3b47bfce6b72d Mon Sep 17 00:00:00 2001
From: cranci1 <100066266+cranci1@users.noreply.github.com>
Date: Mon, 6 Jan 2025 11:08:10 +0100
Subject: [PATCH] fixed workspace
---
.github/workflows/build-JS.yml | 2 +-
Sora-JS/Info.plist | 11 -
.../project.pbxproj | 290 +++++++++---------
.../contents.xcworkspacedata | 0
.../xcshareddata/IDEWorkspaceChecks.plist | 0
.../xcshareddata/swiftpm/Package.resolved | 0
.../AccentColor.colorset/Contents.json | 0
.../AppIcon.appiconset/120-1.png | Bin
.../AppIcon.appiconset/120.png | Bin
.../AppIcon.appiconset/152.png | Bin
.../AppIcon.appiconset/167.png | Bin
.../AppIcon.appiconset/180.png | Bin
.../Assets.xcassets/AppIcon.appiconset/20.png | Bin
.../Assets.xcassets/AppIcon.appiconset/29.png | Bin
.../AppIcon.appiconset/40-1.png | Bin
.../AppIcon.appiconset/40-2.png | Bin
.../Assets.xcassets/AppIcon.appiconset/40.png | Bin
.../AppIcon.appiconset/58-1.png | Bin
.../Assets.xcassets/AppIcon.appiconset/58.png | Bin
.../Assets.xcassets/AppIcon.appiconset/60.png | Bin
.../Assets.xcassets/AppIcon.appiconset/76.png | Bin
.../AppIcon.appiconset/80-1.png | Bin
.../Assets.xcassets/AppIcon.appiconset/80.png | Bin
.../Assets.xcassets/AppIcon.appiconset/87.png | Bin
.../AppIcon.appiconset/Contents.json | 0
.../Assets.xcassets/Contents.json | 0
{Sora-JS => Sora}/ContentView.swift | 4 +-
.../Preview Assets.xcassets/Contents.json | 0
.../Sora_JSApp.swift => Sora/SoraApp.swift | 8 +-
.../Utils/Extensions/URLSession.swift | 0
.../Utils/Loaders/JSController.swift | 2 +-
{Sora-JS => Sora}/Utils/Modules/Modules.swift | 2 +-
{Sora-JS => Sora}/Views/HomeView.swift | 2 +-
{Sora-JS => Sora}/Views/LibraryView.swift | 2 +-
.../Views/MediaInfoView/MediaInfoView.swift | 4 +-
{Sora-JS => Sora}/Views/SearchView.swift | 2 +-
.../Views/SettingsView/SettingsView.swift | 2 +-
.../SubViews/SettingsViewModule.swift | 2 +-
assets/Sora_banner.png | Bin 0 -> 191704 bytes
assets/banner2.png | Bin 0 -> 227786 bytes
ipabuild.sh | 10 +-
41 files changed, 163 insertions(+), 180 deletions(-)
delete mode 100644 Sora-JS/Info.plist
rename {Sora-JS.xcodeproj => Sora.xcodeproj}/project.pbxproj (55%)
rename {Sora-JS.xcodeproj => Sora.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%)
rename {Sora-JS.xcodeproj => Sora.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%)
rename {Sora-JS.xcodeproj => Sora.xcodeproj}/project.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AccentColor.colorset/Contents.json (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/120-1.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/120.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/152.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/167.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/180.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/20.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/29.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/40-1.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/40-2.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/40.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/58-1.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/58.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/60.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/76.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/80-1.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/80.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/87.png (100%)
rename {Sora-JS => Sora}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%)
rename {Sora-JS => Sora}/Assets.xcassets/Contents.json (100%)
rename {Sora-JS => Sora}/ContentView.swift (93%)
rename {Sora-JS => Sora}/Preview Content/Preview Assets.xcassets/Contents.json (100%)
rename Sora-JS/Sora_JSApp.swift => Sora/SoraApp.swift (83%)
rename {Sora-JS => Sora}/Utils/Extensions/URLSession.swift (100%)
rename {Sora-JS => Sora}/Utils/Loaders/JSController.swift (99%)
rename {Sora-JS => Sora}/Utils/Modules/Modules.swift (99%)
rename {Sora-JS => Sora}/Views/HomeView.swift (94%)
rename {Sora-JS => Sora}/Views/LibraryView.swift (95%)
rename {Sora-JS => Sora}/Views/MediaInfoView/MediaInfoView.swift (99%)
rename {Sora-JS => Sora}/Views/SearchView.swift (99%)
rename {Sora-JS => Sora}/Views/SettingsView/SettingsView.swift (99%)
rename {Sora-JS => Sora}/Views/SettingsView/SubViews/SettingsViewModule.swift (99%)
create mode 100644 assets/Sora_banner.png
create mode 100644 assets/banner2.png
diff --git a/.github/workflows/build-JS.yml b/.github/workflows/build-JS.yml
index 954cbf1..ff780f2 100644
--- a/.github/workflows/build-JS.yml
+++ b/.github/workflows/build-JS.yml
@@ -25,5 +25,5 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: Sora-IPA
- path: build/Sora-JS.ipa
+ path: build/Sora.ipa
compression-level: 0
diff --git a/Sora-JS/Info.plist b/Sora-JS/Info.plist
deleted file mode 100644
index 6a6654d..0000000
--- a/Sora-JS/Info.plist
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- NSAppTransportSecurity
-
- NSAllowsArbitraryLoads
-
-
-
-
diff --git a/Sora-JS.xcodeproj/project.pbxproj b/Sora.xcodeproj/project.pbxproj
similarity index 55%
rename from Sora-JS.xcodeproj/project.pbxproj
rename to Sora.xcodeproj/project.pbxproj
index ccf09bd..cf26c32 100644
--- a/Sora-JS.xcodeproj/project.pbxproj
+++ b/Sora.xcodeproj/project.pbxproj
@@ -7,200 +7,198 @@
objects = {
/* Begin PBXBuildFile section */
- 1329D5C72D298198008AEDA2 /* Sora_JSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1329D5C62D298198008AEDA2 /* Sora_JSApp.swift */; };
- 1329D5C92D298198008AEDA2 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1329D5C82D298198008AEDA2 /* ContentView.swift */; };
- 1329D5CB2D298199008AEDA2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1329D5CA2D298199008AEDA2 /* Assets.xcassets */; };
- 1329D5CE2D298199008AEDA2 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1329D5CD2D298199008AEDA2 /* Preview Assets.xcassets */; };
- 133D7C1B2D2ADC430075467E /* URLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C1A2D2ADC430075467E /* URLSession.swift */; };
- 133D7C1E2D2ADF110075467E /* MediaInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C1D2D2ADF110075467E /* MediaInfoView.swift */; };
- 13AEE6192D2A75110096D953 /* Modules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE6182D2A75110096D953 /* Modules.swift */; };
- 13AEE61B2D2A78050096D953 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE61A2D2A78050096D953 /* SettingsView.swift */; };
- 13AEE61D2D2A78160096D953 /* JSController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE61C2D2A78160096D953 /* JSController.swift */; };
- 13AEE6232D2AAF160096D953 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 13AEE6222D2AAF160096D953 /* Kingfisher */; };
- 13AEE6252D2AB1730096D953 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE6242D2AB1730096D953 /* HomeView.swift */; };
- 13AEE6272D2AB1990096D953 /* LibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE6262D2AB1990096D953 /* LibraryView.swift */; };
- 13AEE6292D2AB2070096D953 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE6282D2AB2070096D953 /* SearchView.swift */; };
- 13AEE62D2D2ABCD30096D953 /* SettingsViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AEE62C2D2ABCD30096D953 /* SettingsViewModule.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 */; };
+ 133D7C752D2BE2520075467E /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 133D7C742D2BE2520075467E /* Preview Assets.xcassets */; };
+ 133D7C8C2D2BE2640075467E /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C7C2D2BE2630075467E /* SearchView.swift */; };
+ 133D7C8D2D2BE2640075467E /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C7D2D2BE2630075467E /* HomeView.swift */; };
+ 133D7C8E2D2BE2640075467E /* LibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C7E2D2BE2630075467E /* LibraryView.swift */; };
+ 133D7C8F2D2BE2640075467E /* MediaInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C802D2BE2630075467E /* MediaInfoView.swift */; };
+ 133D7C902D2BE2640075467E /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C822D2BE2630075467E /* SettingsView.swift */; };
+ 133D7C912D2BE2640075467E /* SettingsViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C842D2BE2630075467E /* SettingsViewModule.swift */; };
+ 133D7C922D2BE2640075467E /* URLSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C872D2BE2640075467E /* URLSession.swift */; };
+ 133D7C932D2BE2640075467E /* Modules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C892D2BE2640075467E /* Modules.swift */; };
+ 133D7C942D2BE2640075467E /* JSController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 133D7C8B2D2BE2640075467E /* JSController.swift */; };
+ 133D7C972D2BE2AF0075467E /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 133D7C962D2BE2AF0075467E /* Kingfisher */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
- 1329D5C32D298198008AEDA2 /* Sora-JS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Sora-JS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 1329D5C62D298198008AEDA2 /* Sora_JSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sora_JSApp.swift; sourceTree = ""; };
- 1329D5C82D298198008AEDA2 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
- 1329D5CA2D298199008AEDA2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 1329D5CD2D298199008AEDA2 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
- 1329D5DA2D29821B008AEDA2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
- 133D7C1A2D2ADC430075467E /* URLSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSession.swift; sourceTree = ""; };
- 133D7C1D2D2ADF110075467E /* MediaInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaInfoView.swift; sourceTree = ""; };
- 13AEE6182D2A75110096D953 /* Modules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modules.swift; sourceTree = ""; };
- 13AEE61A2D2A78050096D953 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; };
- 13AEE61C2D2A78160096D953 /* JSController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSController.swift; sourceTree = ""; };
- 13AEE6242D2AB1730096D953 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; };
- 13AEE6262D2AB1990096D953 /* LibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryView.swift; sourceTree = ""; };
- 13AEE6282D2AB2070096D953 /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; };
- 13AEE62C2D2ABCD30096D953 /* SettingsViewModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModule.swift; sourceTree = ""; };
+ 133D7C6A2D2BE2500075467E /* Sora.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sora.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 133D7C6D2D2BE2500075467E /* SoraApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoraApp.swift; sourceTree = ""; };
+ 133D7C6F2D2BE2500075467E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
+ 133D7C712D2BE2520075467E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 133D7C742D2BE2520075467E /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
+ 133D7C7C2D2BE2630075467E /* SearchView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; };
+ 133D7C7D2D2BE2630075467E /* HomeView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; };
+ 133D7C7E2D2BE2630075467E /* LibraryView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryView.swift; sourceTree = ""; };
+ 133D7C802D2BE2630075467E /* MediaInfoView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaInfoView.swift; sourceTree = ""; };
+ 133D7C822D2BE2630075467E /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; };
+ 133D7C842D2BE2630075467E /* SettingsViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewModule.swift; sourceTree = ""; };
+ 133D7C872D2BE2640075467E /* URLSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLSession.swift; sourceTree = ""; };
+ 133D7C892D2BE2640075467E /* Modules.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Modules.swift; sourceTree = ""; };
+ 133D7C8B2D2BE2640075467E /* JSController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSController.swift; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
- 1329D5C02D298198008AEDA2 /* Frameworks */ = {
+ 133D7C672D2BE2500075467E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 13AEE6232D2AAF160096D953 /* Kingfisher in Frameworks */,
+ 133D7C972D2BE2AF0075467E /* Kingfisher in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 1329D5BA2D298198008AEDA2 = {
+ 133D7C612D2BE2500075467E = {
isa = PBXGroup;
children = (
- 1329D5C52D298198008AEDA2 /* Sora-JS */,
- 1329D5C42D298198008AEDA2 /* Products */,
+ 133D7C6C2D2BE2500075467E /* Sora */,
+ 133D7C6B2D2BE2500075467E /* Products */,
);
sourceTree = "";
};
- 1329D5C42D298198008AEDA2 /* Products */ = {
+ 133D7C6B2D2BE2500075467E /* Products */ = {
isa = PBXGroup;
children = (
- 1329D5C32D298198008AEDA2 /* Sora-JS.app */,
+ 133D7C6A2D2BE2500075467E /* Sora.app */,
);
name = Products;
sourceTree = "";
};
- 1329D5C52D298198008AEDA2 /* Sora-JS */ = {
+ 133D7C6C2D2BE2500075467E /* Sora */ = {
isa = PBXGroup;
children = (
- 133D7C182D2ADC300075467E /* Utils */,
- 13AEE61E2D2AAD1E0096D953 /* Views */,
- 1329D5DA2D29821B008AEDA2 /* Info.plist */,
- 1329D5C62D298198008AEDA2 /* Sora_JSApp.swift */,
- 1329D5C82D298198008AEDA2 /* ContentView.swift */,
- 1329D5CA2D298199008AEDA2 /* Assets.xcassets */,
- 1329D5CC2D298199008AEDA2 /* Preview Content */,
+ 133D7C852D2BE2640075467E /* Utils */,
+ 133D7C7B2D2BE2630075467E /* Views */,
+ 133D7C6D2D2BE2500075467E /* SoraApp.swift */,
+ 133D7C6F2D2BE2500075467E /* ContentView.swift */,
+ 133D7C712D2BE2520075467E /* Assets.xcassets */,
+ 133D7C732D2BE2520075467E /* Preview Content */,
);
- path = "Sora-JS";
+ path = Sora;
sourceTree = "";
};
- 1329D5CC2D298199008AEDA2 /* Preview Content */ = {
+ 133D7C732D2BE2520075467E /* Preview Content */ = {
isa = PBXGroup;
children = (
- 1329D5CD2D298199008AEDA2 /* Preview Assets.xcassets */,
+ 133D7C742D2BE2520075467E /* Preview Assets.xcassets */,
);
path = "Preview Content";
sourceTree = "";
};
- 133D7C182D2ADC300075467E /* Utils */ = {
+ 133D7C7B2D2BE2630075467E /* Views */ = {
isa = PBXGroup;
children = (
- 133D7C192D2ADC370075467E /* Extensions */,
- 13AEE6202D2AAD390096D953 /* Modules */,
- 13AEE61F2D2AAD2D0096D953 /* Loaders */,
- );
- path = Utils;
- sourceTree = "";
- };
- 133D7C192D2ADC370075467E /* Extensions */ = {
- isa = PBXGroup;
- children = (
- 133D7C1A2D2ADC430075467E /* URLSession.swift */,
- );
- path = Extensions;
- sourceTree = "";
- };
- 133D7C1C2D2ADF060075467E /* MediaInfoView */ = {
- isa = PBXGroup;
- children = (
- 133D7C1D2D2ADF110075467E /* MediaInfoView.swift */,
- );
- path = MediaInfoView;
- sourceTree = "";
- };
- 13AEE61E2D2AAD1E0096D953 /* Views */ = {
- isa = PBXGroup;
- children = (
- 133D7C1C2D2ADF060075467E /* MediaInfoView */,
- 13AEE62A2D2ABCB40096D953 /* SettingsView */,
- 13AEE6242D2AB1730096D953 /* HomeView.swift */,
- 13AEE6262D2AB1990096D953 /* LibraryView.swift */,
- 13AEE6282D2AB2070096D953 /* SearchView.swift */,
+ 133D7C812D2BE2630075467E /* SettingsView */,
+ 133D7C7F2D2BE2630075467E /* MediaInfoView */,
+ 133D7C7C2D2BE2630075467E /* SearchView.swift */,
+ 133D7C7D2D2BE2630075467E /* HomeView.swift */,
+ 133D7C7E2D2BE2630075467E /* LibraryView.swift */,
);
path = Views;
sourceTree = "";
};
- 13AEE61F2D2AAD2D0096D953 /* Loaders */ = {
+ 133D7C7F2D2BE2630075467E /* MediaInfoView */ = {
isa = PBXGroup;
children = (
- 13AEE61C2D2A78160096D953 /* JSController.swift */,
+ 133D7C802D2BE2630075467E /* MediaInfoView.swift */,
);
- path = Loaders;
+ path = MediaInfoView;
sourceTree = "";
};
- 13AEE6202D2AAD390096D953 /* Modules */ = {
+ 133D7C812D2BE2630075467E /* SettingsView */ = {
isa = PBXGroup;
children = (
- 13AEE6182D2A75110096D953 /* Modules.swift */,
- );
- path = Modules;
- sourceTree = "";
- };
- 13AEE62A2D2ABCB40096D953 /* SettingsView */ = {
- isa = PBXGroup;
- children = (
- 13AEE62B2D2ABCC10096D953 /* SubViews */,
- 13AEE61A2D2A78050096D953 /* SettingsView.swift */,
+ 133D7C822D2BE2630075467E /* SettingsView.swift */,
+ 133D7C832D2BE2630075467E /* SubViews */,
);
path = SettingsView;
sourceTree = "";
};
- 13AEE62B2D2ABCC10096D953 /* SubViews */ = {
+ 133D7C832D2BE2630075467E /* SubViews */ = {
isa = PBXGroup;
children = (
- 13AEE62C2D2ABCD30096D953 /* SettingsViewModule.swift */,
+ 133D7C842D2BE2630075467E /* SettingsViewModule.swift */,
);
path = SubViews;
sourceTree = "";
};
+ 133D7C852D2BE2640075467E /* Utils */ = {
+ isa = PBXGroup;
+ children = (
+ 133D7C862D2BE2640075467E /* Extensions */,
+ 133D7C882D2BE2640075467E /* Modules */,
+ 133D7C8A2D2BE2640075467E /* Loaders */,
+ );
+ path = Utils;
+ sourceTree = "";
+ };
+ 133D7C862D2BE2640075467E /* Extensions */ = {
+ isa = PBXGroup;
+ children = (
+ 133D7C872D2BE2640075467E /* URLSession.swift */,
+ );
+ path = Extensions;
+ sourceTree = "";
+ };
+ 133D7C882D2BE2640075467E /* Modules */ = {
+ isa = PBXGroup;
+ children = (
+ 133D7C892D2BE2640075467E /* Modules.swift */,
+ );
+ path = Modules;
+ sourceTree = "";
+ };
+ 133D7C8A2D2BE2640075467E /* Loaders */ = {
+ isa = PBXGroup;
+ children = (
+ 133D7C8B2D2BE2640075467E /* JSController.swift */,
+ );
+ path = Loaders;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 1329D5C22D298198008AEDA2 /* Sora-JS */ = {
+ 133D7C692D2BE2500075467E /* Sora */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 1329D5D12D298199008AEDA2 /* Build configuration list for PBXNativeTarget "Sora-JS" */;
+ buildConfigurationList = 133D7C782D2BE2520075467E /* Build configuration list for PBXNativeTarget "Sora" */;
buildPhases = (
- 1329D5BF2D298198008AEDA2 /* Sources */,
- 1329D5C02D298198008AEDA2 /* Frameworks */,
- 1329D5C12D298198008AEDA2 /* Resources */,
+ 133D7C662D2BE2500075467E /* Sources */,
+ 133D7C672D2BE2500075467E /* Frameworks */,
+ 133D7C682D2BE2500075467E /* Resources */,
);
buildRules = (
);
dependencies = (
);
- name = "Sora-JS";
+ name = Sora;
packageProductDependencies = (
- 13AEE6222D2AAF160096D953 /* Kingfisher */,
+ 133D7C962D2BE2AF0075467E /* Kingfisher */,
);
- productName = "Sora-JS";
- productReference = 1329D5C32D298198008AEDA2 /* Sora-JS.app */;
+ productName = Sora;
+ productReference = 133D7C6A2D2BE2500075467E /* Sora.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
- 1329D5BB2D298198008AEDA2 /* Project object */ = {
+ 133D7C622D2BE2500075467E /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1320;
LastUpgradeCheck = 1320;
TargetAttributes = {
- 1329D5C22D298198008AEDA2 = {
+ 133D7C692D2BE2500075467E = {
CreatedOnToolsVersion = 13.2.1;
};
};
};
- buildConfigurationList = 1329D5BE2D298198008AEDA2 /* Build configuration list for PBXProject "Sora-JS" */;
+ buildConfigurationList = 133D7C652D2BE2500075467E /* Build configuration list for PBXProject "Sora" */;
compatibilityVersion = "Xcode 13.0";
developmentRegion = en;
hasScannedForEncodings = 0;
@@ -208,54 +206,54 @@
en,
Base,
);
- mainGroup = 1329D5BA2D298198008AEDA2;
+ mainGroup = 133D7C612D2BE2500075467E;
packageReferences = (
- 13AEE6212D2AAF160096D953 /* XCRemoteSwiftPackageReference "Kingfisher" */,
+ 133D7C952D2BE2AF0075467E /* XCRemoteSwiftPackageReference "Kingfisher" */,
);
- productRefGroup = 1329D5C42D298198008AEDA2 /* Products */;
+ productRefGroup = 133D7C6B2D2BE2500075467E /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
- 1329D5C22D298198008AEDA2 /* Sora-JS */,
+ 133D7C692D2BE2500075467E /* Sora */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 1329D5C12D298198008AEDA2 /* Resources */ = {
+ 133D7C682D2BE2500075467E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 1329D5CE2D298199008AEDA2 /* Preview Assets.xcassets in Resources */,
- 1329D5CB2D298199008AEDA2 /* Assets.xcassets in Resources */,
+ 133D7C752D2BE2520075467E /* Preview Assets.xcassets in Resources */,
+ 133D7C722D2BE2520075467E /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 1329D5BF2D298198008AEDA2 /* Sources */ = {
+ 133D7C662D2BE2500075467E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 13AEE6272D2AB1990096D953 /* LibraryView.swift in Sources */,
- 1329D5C92D298198008AEDA2 /* ContentView.swift in Sources */,
- 133D7C1B2D2ADC430075467E /* URLSession.swift in Sources */,
- 13AEE62D2D2ABCD30096D953 /* SettingsViewModule.swift in Sources */,
- 13AEE61D2D2A78160096D953 /* JSController.swift in Sources */,
- 13AEE6192D2A75110096D953 /* Modules.swift in Sources */,
- 13AEE6292D2AB2070096D953 /* SearchView.swift in Sources */,
- 13AEE6252D2AB1730096D953 /* HomeView.swift in Sources */,
- 13AEE61B2D2A78050096D953 /* SettingsView.swift in Sources */,
- 1329D5C72D298198008AEDA2 /* Sora_JSApp.swift in Sources */,
- 133D7C1E2D2ADF110075467E /* MediaInfoView.swift in Sources */,
+ 133D7C902D2BE2640075467E /* SettingsView.swift in Sources */,
+ 133D7C932D2BE2640075467E /* Modules.swift in Sources */,
+ 133D7C702D2BE2500075467E /* ContentView.swift in Sources */,
+ 133D7C8F2D2BE2640075467E /* MediaInfoView.swift in Sources */,
+ 133D7C8D2D2BE2640075467E /* HomeView.swift in Sources */,
+ 133D7C8C2D2BE2640075467E /* SearchView.swift in Sources */,
+ 133D7C942D2BE2640075467E /* JSController.swift in Sources */,
+ 133D7C922D2BE2640075467E /* URLSession.swift in Sources */,
+ 133D7C912D2BE2640075467E /* SettingsViewModule.swift in Sources */,
+ 133D7C8E2D2BE2640075467E /* LibraryView.swift in Sources */,
+ 133D7C6E2D2BE2500075467E /* SoraApp.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
- 1329D5CF2D298199008AEDA2 /* Debug */ = {
+ 133D7C762D2BE2520075467E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -316,7 +314,7 @@
};
name = Debug;
};
- 1329D5D02D298199008AEDA2 /* Release */ = {
+ 133D7C772D2BE2520075467E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
@@ -371,19 +369,17 @@
};
name = Release;
};
- 1329D5D22D298199008AEDA2 /* Debug */ = {
+ 133D7C792D2BE2520075467E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_ASSET_PATHS = "\"Sora-JS/Preview Content\"";
+ DEVELOPMENT_ASSET_PATHS = "\"Sora/Preview Content\"";
DEVELOPMENT_TEAM = 399LMK6Q2Y;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = "Sora-JS/Info.plist";
- INFOPLIST_KEY_CFBundleDisplayName = Sora;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@@ -395,7 +391,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.2.0;
- PRODUCT_BUNDLE_IDENTIFIER = "me.cranci.Sora-JS";
+ PRODUCT_BUNDLE_IDENTIFIER = me.cranci.Sora;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -403,19 +399,17 @@
};
name = Debug;
};
- 1329D5D32D298199008AEDA2 /* Release */ = {
+ 133D7C7A2D2BE2520075467E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_ASSET_PATHS = "\"Sora-JS/Preview Content\"";
+ DEVELOPMENT_ASSET_PATHS = "\"Sora/Preview Content\"";
DEVELOPMENT_TEAM = 399LMK6Q2Y;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = "Sora-JS/Info.plist";
- INFOPLIST_KEY_CFBundleDisplayName = Sora;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@@ -427,7 +421,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.2.0;
- PRODUCT_BUNDLE_IDENTIFIER = "me.cranci.Sora-JS";
+ PRODUCT_BUNDLE_IDENTIFIER = me.cranci.Sora;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -438,20 +432,20 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 1329D5BE2D298198008AEDA2 /* Build configuration list for PBXProject "Sora-JS" */ = {
+ 133D7C652D2BE2500075467E /* Build configuration list for PBXProject "Sora" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 1329D5CF2D298199008AEDA2 /* Debug */,
- 1329D5D02D298199008AEDA2 /* Release */,
+ 133D7C762D2BE2520075467E /* Debug */,
+ 133D7C772D2BE2520075467E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 1329D5D12D298199008AEDA2 /* Build configuration list for PBXNativeTarget "Sora-JS" */ = {
+ 133D7C782D2BE2520075467E /* Build configuration list for PBXNativeTarget "Sora" */ = {
isa = XCConfigurationList;
buildConfigurations = (
- 1329D5D22D298199008AEDA2 /* Debug */,
- 1329D5D32D298199008AEDA2 /* Release */,
+ 133D7C792D2BE2520075467E /* Debug */,
+ 133D7C7A2D2BE2520075467E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
@@ -459,7 +453,7 @@
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
- 13AEE6212D2AAF160096D953 /* XCRemoteSwiftPackageReference "Kingfisher" */ = {
+ 133D7C952D2BE2AF0075467E /* XCRemoteSwiftPackageReference "Kingfisher" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/onevcat/Kingfisher.git";
requirement = {
@@ -470,12 +464,12 @@
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
- 13AEE6222D2AAF160096D953 /* Kingfisher */ = {
+ 133D7C962D2BE2AF0075467E /* Kingfisher */ = {
isa = XCSwiftPackageProductDependency;
- package = 13AEE6212D2AAF160096D953 /* XCRemoteSwiftPackageReference "Kingfisher" */;
+ package = 133D7C952D2BE2AF0075467E /* XCRemoteSwiftPackageReference "Kingfisher" */;
productName = Kingfisher;
};
/* End XCSwiftPackageProductDependency section */
};
- rootObject = 1329D5BB2D298198008AEDA2 /* Project object */;
+ rootObject = 133D7C622D2BE2500075467E /* Project object */;
}
diff --git a/Sora-JS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Sora.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from Sora-JS.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to Sora.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/Sora-JS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Sora.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from Sora-JS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to Sora.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/Sora-JS.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Sora.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
similarity index 100%
rename from Sora-JS.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
rename to Sora.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
diff --git a/Sora-JS/Assets.xcassets/AccentColor.colorset/Contents.json b/Sora/Assets.xcassets/AccentColor.colorset/Contents.json
similarity index 100%
rename from Sora-JS/Assets.xcassets/AccentColor.colorset/Contents.json
rename to Sora/Assets.xcassets/AccentColor.colorset/Contents.json
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/120-1.png b/Sora/Assets.xcassets/AppIcon.appiconset/120-1.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/120-1.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/120-1.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/120.png b/Sora/Assets.xcassets/AppIcon.appiconset/120.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/120.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/120.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/152.png b/Sora/Assets.xcassets/AppIcon.appiconset/152.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/152.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/152.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/167.png b/Sora/Assets.xcassets/AppIcon.appiconset/167.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/167.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/167.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/180.png b/Sora/Assets.xcassets/AppIcon.appiconset/180.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/180.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/180.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/20.png b/Sora/Assets.xcassets/AppIcon.appiconset/20.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/20.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/20.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/29.png b/Sora/Assets.xcassets/AppIcon.appiconset/29.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/29.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/29.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/40-1.png b/Sora/Assets.xcassets/AppIcon.appiconset/40-1.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/40-1.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/40-1.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/40-2.png b/Sora/Assets.xcassets/AppIcon.appiconset/40-2.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/40-2.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/40-2.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/40.png b/Sora/Assets.xcassets/AppIcon.appiconset/40.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/40.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/40.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/58-1.png b/Sora/Assets.xcassets/AppIcon.appiconset/58-1.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/58-1.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/58-1.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/58.png b/Sora/Assets.xcassets/AppIcon.appiconset/58.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/58.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/58.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/60.png b/Sora/Assets.xcassets/AppIcon.appiconset/60.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/60.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/60.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/76.png b/Sora/Assets.xcassets/AppIcon.appiconset/76.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/76.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/76.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/80-1.png b/Sora/Assets.xcassets/AppIcon.appiconset/80-1.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/80-1.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/80-1.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/80.png b/Sora/Assets.xcassets/AppIcon.appiconset/80.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/80.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/80.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/87.png b/Sora/Assets.xcassets/AppIcon.appiconset/87.png
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/87.png
rename to Sora/Assets.xcassets/AppIcon.appiconset/87.png
diff --git a/Sora-JS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Sora/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from Sora-JS/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to Sora/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/Sora-JS/Assets.xcassets/Contents.json b/Sora/Assets.xcassets/Contents.json
similarity index 100%
rename from Sora-JS/Assets.xcassets/Contents.json
rename to Sora/Assets.xcassets/Contents.json
diff --git a/Sora-JS/ContentView.swift b/Sora/ContentView.swift
similarity index 93%
rename from Sora-JS/ContentView.swift
rename to Sora/ContentView.swift
index 44db28f..01fca9c 100644
--- a/Sora-JS/ContentView.swift
+++ b/Sora/ContentView.swift
@@ -1,8 +1,8 @@
//
// ContentView.swift
-// Sora-JS
+// Sora
//
-// Created by Francesco on 04/01/25.
+// Created by Francesco on 06/01/25.
//
import SwiftUI
diff --git a/Sora-JS/Preview Content/Preview Assets.xcassets/Contents.json b/Sora/Preview Content/Preview Assets.xcassets/Contents.json
similarity index 100%
rename from Sora-JS/Preview Content/Preview Assets.xcassets/Contents.json
rename to Sora/Preview Content/Preview Assets.xcassets/Contents.json
diff --git a/Sora-JS/Sora_JSApp.swift b/Sora/SoraApp.swift
similarity index 83%
rename from Sora-JS/Sora_JSApp.swift
rename to Sora/SoraApp.swift
index 70245bd..d9adbf4 100644
--- a/Sora-JS/Sora_JSApp.swift
+++ b/Sora/SoraApp.swift
@@ -1,14 +1,14 @@
//
-// Sora_JSApp.swift
-// Sora-JS
+// SoraApp.swift
+// Sora
//
-// Created by Francesco on 04/01/25.
+// Created by Francesco on 06/01/25.
//
import SwiftUI
@main
-struct Sora_JSApp: App {
+struct SoraApp: App {
@StateObject private var settings = Settings()
@StateObject private var moduleManager = ModuleManager()
diff --git a/Sora-JS/Utils/Extensions/URLSession.swift b/Sora/Utils/Extensions/URLSession.swift
similarity index 100%
rename from Sora-JS/Utils/Extensions/URLSession.swift
rename to Sora/Utils/Extensions/URLSession.swift
diff --git a/Sora-JS/Utils/Loaders/JSController.swift b/Sora/Utils/Loaders/JSController.swift
similarity index 99%
rename from Sora-JS/Utils/Loaders/JSController.swift
rename to Sora/Utils/Loaders/JSController.swift
index 92bd0f6..946d1ed 100644
--- a/Sora-JS/Utils/Loaders/JSController.swift
+++ b/Sora/Utils/Loaders/JSController.swift
@@ -1,6 +1,6 @@
//
// JSController.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/Sora-JS/Utils/Modules/Modules.swift b/Sora/Utils/Modules/Modules.swift
similarity index 99%
rename from Sora-JS/Utils/Modules/Modules.swift
rename to Sora/Utils/Modules/Modules.swift
index 22946c6..f33a1c0 100644
--- a/Sora-JS/Utils/Modules/Modules.swift
+++ b/Sora/Utils/Modules/Modules.swift
@@ -1,6 +1,6 @@
//
// Modules.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/Sora-JS/Views/HomeView.swift b/Sora/Views/HomeView.swift
similarity index 94%
rename from Sora-JS/Views/HomeView.swift
rename to Sora/Views/HomeView.swift
index db6742f..72ecb7c 100644
--- a/Sora-JS/Views/HomeView.swift
+++ b/Sora/Views/HomeView.swift
@@ -1,6 +1,6 @@
//
// HomeView.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/Sora-JS/Views/LibraryView.swift b/Sora/Views/LibraryView.swift
similarity index 95%
rename from Sora-JS/Views/LibraryView.swift
rename to Sora/Views/LibraryView.swift
index 1e6408d..11b7313 100644
--- a/Sora-JS/Views/LibraryView.swift
+++ b/Sora/Views/LibraryView.swift
@@ -1,6 +1,6 @@
//
// LibraryView.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/Sora-JS/Views/MediaInfoView/MediaInfoView.swift b/Sora/Views/MediaInfoView/MediaInfoView.swift
similarity index 99%
rename from Sora-JS/Views/MediaInfoView/MediaInfoView.swift
rename to Sora/Views/MediaInfoView/MediaInfoView.swift
index fb74815..9f901ad 100644
--- a/Sora-JS/Views/MediaInfoView/MediaInfoView.swift
+++ b/Sora/Views/MediaInfoView/MediaInfoView.swift
@@ -1,6 +1,6 @@
//
// MediaInfoView.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
@@ -50,4 +50,4 @@ struct MediaInfoView: View {
.navigationTitle("Media Info")
.navigationBarTitleDisplayMode(.inline)
}
-}
\ No newline at end of file
+}
diff --git a/Sora-JS/Views/SearchView.swift b/Sora/Views/SearchView.swift
similarity index 99%
rename from Sora-JS/Views/SearchView.swift
rename to Sora/Views/SearchView.swift
index 873fc75..7bef4ef 100644
--- a/Sora-JS/Views/SearchView.swift
+++ b/Sora/Views/SearchView.swift
@@ -1,6 +1,6 @@
//
// SearchView.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/Sora-JS/Views/SettingsView/SettingsView.swift b/Sora/Views/SettingsView/SettingsView.swift
similarity index 99%
rename from Sora-JS/Views/SettingsView/SettingsView.swift
rename to Sora/Views/SettingsView/SettingsView.swift
index f882c4f..a3b059c 100644
--- a/Sora-JS/Views/SettingsView/SettingsView.swift
+++ b/Sora/Views/SettingsView/SettingsView.swift
@@ -1,6 +1,6 @@
//
// SettingsView.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/Sora-JS/Views/SettingsView/SubViews/SettingsViewModule.swift b/Sora/Views/SettingsView/SubViews/SettingsViewModule.swift
similarity index 99%
rename from Sora-JS/Views/SettingsView/SubViews/SettingsViewModule.swift
rename to Sora/Views/SettingsView/SubViews/SettingsViewModule.swift
index 4cce272..58f4eb3 100644
--- a/Sora-JS/Views/SettingsView/SubViews/SettingsViewModule.swift
+++ b/Sora/Views/SettingsView/SubViews/SettingsViewModule.swift
@@ -1,6 +1,6 @@
//
// SettingsViewModule.swift
-// Sora-JS
+// Sora
//
// Created by Francesco on 05/01/25.
//
diff --git a/assets/Sora_banner.png b/assets/Sora_banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..d99b8e7b9055c8a97cb5a5d019b6196f961c9d71
GIT binary patch
literal 191704
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