This repository was archived by the owner on Mar 7, 2026. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 9595 echo "project.pbxproj header (first 60 lines):"
9696 sed -n '1,60p' prostore.xcodeproj/project.pbxproj || true
9797
98+ - name : Resolve Swift Package dependencies
99+ run : |
100+ set -e
101+ echo "Resolving Swift package dependencies for prostore..."
102+ xcodebuild -resolvePackageDependencies -project prostore.xcodeproj -scheme prostore -configuration Release
103+
98104 - name : Try building archive, auto-fix objectVersion on future-format error
99105 run : |
100106 set -e
Original file line number Diff line number Diff line change 1+ import SwiftUI
2+
3+ struct ContentView : View {
4+ @StateObject private var vm = SourceViewModel ( )
5+
6+ // Replace these with your real source URLs
7+ private let urls : [ URL ] = [
8+ URL ( string: " https://repository.apptesters.org " ) !,
9+ URL ( string: " https://quarksources.github.io/altstore-complete.json " ) !
10+ ]
11+
12+ var body : some View {
13+ NavigationView {
14+ Group {
15+ if vm. isLoading && vm. outputs. isEmpty {
16+ VStack {
17+ ProgressView ( )
18+ Text ( " Fetching sources... " )
19+ . font ( . caption)
20+ }
21+ } else {
22+ List {
23+ ForEach ( vm. outputs, id: \. 0 ) { item in
24+ Section ( header: Text ( item. 0 . absoluteString) . font ( . caption) ) {
25+ switch item. 1 {
26+ case . success( let prettyJSON) :
27+ // Show JSON in a scrollable monospace block
28+ ScrollView ( . horizontal) {
29+ Text ( prettyJSON)
30+ . font ( . system( . body, design: . monospaced) )
31+ . textSelection ( . enabled)
32+ . padding ( . vertical, 6 )
33+ }
34+ . frame ( maxHeight: 300 )
35+ case . failure( let err) :
36+ Text ( " Error: \( err. localizedDescription) " )
37+ . foregroundColor ( . red)
38+ }
39+ }
40+ }
41+ }
42+ }
43+ }
44+ . navigationTitle ( " Sources " )
45+ . toolbar {
46+ Button ( " Reload " ) {
47+ Task {
48+ await vm. load ( urls: urls)
49+ }
50+ }
51+ }
52+ . task {
53+ // Load automatically when view appears
54+ await vm. load ( urls: urls)
55+ }
56+ }
57+ }
58+ }
Original file line number Diff line number Diff line change 1+ import Foundation
2+ import Combine
3+ import ProSourceManager
4+
5+ @MainActor
6+ final class SourceViewModel : ObservableObject {
7+ @Published var outputs : [ ( URL , Result < String , Error > ) ] = [ ]
8+ @Published var isLoading : Bool = false
9+
10+ func load( urls: [ URL ] ) async {
11+ isLoading = true
12+ let results = await ProSourceManager . fetchJSONStrings ( from: urls)
13+ self . outputs = results
14+ isLoading = false
15+ }
16+ }
Original file line number Diff line number Diff line change 11import SwiftUI
22
33@main
4- struct ProStoreApp : App {
4+ struct ProStore : App {
55 var body : some Scene {
66 WindowGroup {
7- EmptyView ( )
7+ ContentView ( )
88 }
99 }
1010}
Original file line number Diff line number Diff line change 1- name : prostore
2-
3- options :
4- bundleIdPrefix : com.prostoreios
5-
6- configs :
7- Debug : debug
8- Release : release
1+ packages :
2+ ProSourceManager :
3+ url : https://github.com/ProStore-iOS/ProSourceManager.git
4+ branch : main
95
106targets :
117 prostore :
@@ -27,4 +23,7 @@ targets:
2723 UILaunchStoryboardName : " LaunchScreen"
2824 NSPrincipalClass : " UIApplication"
2925 NSAppTransportSecurity :
30- NSAllowsArbitraryLoads : true
26+ NSAllowsArbitraryLoads : true
27+ dependencies :
28+ - package : ProSourceManager
29+ product : ProSourceManager
You can’t perform that action at this time.
0 commit comments