Skip to content
This repository was archived by the owner on Feb 23, 2026. It is now read-only.
/ harmonie Public archive

Commit c61bb78

Browse files
authored
Merge pull request #210 from makinosp/develop
update: bump up to 0.10.0
2 parents ab40564 + e54bdaa commit c61bb78

File tree

7 files changed

+33
-19
lines changed

7 files changed

+33
-19
lines changed

Harmonie.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@
474474
"$(inherited)",
475475
"@executable_path/Frameworks",
476476
);
477-
MARKETING_VERSION = 0.9.10;
477+
MARKETING_VERSION = 0.10.0;
478478
PRODUCT_BUNDLE_IDENTIFIER = jp.mknn.harmonie;
479479
PRODUCT_NAME = "$(TARGET_NAME)";
480480
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -510,7 +510,7 @@
510510
"$(inherited)",
511511
"@executable_path/Frameworks",
512512
);
513-
MARKETING_VERSION = 0.9.10;
513+
MARKETING_VERSION = 0.10.0;
514514
PRODUCT_BUNDLE_IDENTIFIER = jp.mknn.harmonie;
515515
PRODUCT_NAME = "$(TARGET_NAME)";
516516
SWIFT_EMIT_LOC_STRINGS = YES;

harmonie/ViewModels/FavoriteViewModel.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ final class FavoriteViewModel {
1515
var favoriteGroups: [FavoriteGroup] = []
1616
var favoriteFriends: [FavoriteFriend] = []
1717
var favoriteWorlds: [FavoriteWorld] = []
18+
var isFetchingFavoriteFriends = true
1819

1920
/// Filters and returns the favorite groups of a specific type.
2021
/// - Parameter type: The `FavoriteType` to filter the favorite groups by.
@@ -66,6 +67,8 @@ final class FavoriteViewModel {
6667
/// if a corresponding friend is found; returns `nil` otherwise.
6768
/// - Throws: An error if the service encounters an issue while fetching favorite groups or favorite details.
6869
func fetchFavoriteFriends(service: FavoriteServiceProtocol, friendFinder: (Favorite) -> Friend?) async throws {
70+
defer { isFetchingFavoriteFriends = false }
71+
isFetchingFavoriteFriends = true
6972
favoriteGroups = try await service.listFavoriteGroups()
7073
let favoriteDetails = try await service.fetchFavoriteList(favoriteGroups: favoriteGroups, type: .friend)
7174
let favoriteDetailsOfFriends = favoriteDetails.filter { $0.allFavoritesAre(.friend) }

harmonie/Views/ContentView.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,20 @@ struct ContentView: View {
1818
switch appVM.step {
1919
case .initializing:
2020
ProgressScreen()
21-
.task {
22-
appVM.step = await appVM.setup(service: appVM.services.authenticationService)
23-
}
24-
.errorAlert()
21+
.task { await setUpTask() }
2522
case .loggingIn:
2623
LoginView()
27-
.errorAlert()
2824
case .done:
2925
MainTabView()
30-
.errorAlert()
3126
}
3227
} action: { geometry in
3328
setScreenSize(geometry)
3429
}
30+
.errorAlert()
31+
}
32+
33+
private func setUpTask() async {
34+
appVM.step = await appVM.setup(service: appVM.services.authenticationService)
3535
}
3636

3737
private func setScreenSize(_ geometry: GeometryProxy) {

harmonie/Views/Favorite/FavoritesView.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ struct FavoritesView: View {
2828
}
2929
}
3030
.overlay {
31-
if isSelectedEmpty {
31+
if isFetching {
32+
ProgressView()
33+
} else if isSelectedEmpty {
3234
ContentUnavailableView {
3335
Label("No Favorites", systemImage: IconSet.favorite.systemName)
3436
}
@@ -47,6 +49,10 @@ struct FavoritesView: View {
4749
}
4850
}
4951

52+
private var isFetching: Bool {
53+
friendVM.isFetchingAllFriends || favoriteVM.isFetchingFavoriteFriends
54+
}
55+
5056
@ViewBuilder private var toolbarTitleMenu: some View {
5157
Picker("", selection: $segment) {
5258
Label("All", systemImage: IconSet.favoriteSquares.systemName)

harmonie/Views/Friend/FriendsListView.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ struct FriendsListView: View {
4343
}
4444

4545
@ViewBuilder private var overlayView: some View {
46-
if friendVM.isProcessingFilter {
46+
if isProcessing {
4747
ProgressView()
4848
} else if friendVM.filterResultFriends.isEmpty {
4949
if friendVM.isEmptyAllFilters {
@@ -59,4 +59,8 @@ struct FriendsListView: View {
5959
}
6060
}
6161
}
62+
63+
private var isProcessing: Bool {
64+
friendVM.isProcessingFilter || friendVM.isFetchingAllFriends
65+
}
6266
}

harmonie/Views/Location/LocationsView.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ struct LocationsView: View {
3939
inPrivateInstance
4040
}
4141
}
42-
.environment(\.defaultMinListRowHeight, 80)
4342
.overlay {
4443
if friendVM.isContentUnavailable {
4544
ContentUnavailableView {
@@ -86,7 +85,6 @@ struct LocationsView: View {
8685
}
8786
}
8887
}
89-
.safeAreaPadding(.top, 20)
9088
.background(Color(.systemGroupedBackground))
9189
.setColumn(appVM.screenSize)
9290
}

harmonie/Views/MainTabView.swift

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ struct MainTabView: View {
3030
Task { await fetchFriendsTask() }
3131
Task { await fetchFavoritesTask() }
3232
}
33-
.onChange(of: scenePhase) {
34-
scenePhaseHandler(scenePhase)
33+
.onChange(of: scenePhase) { before, after in
34+
changedScenePhaseHandler(before, after)
3535
}
3636
.onChange(of: favoriteVM.favoriteFriends) {
3737
friendVM.favoriteFriends = favoriteVM.favoriteFriends
@@ -51,15 +51,15 @@ extension MainTabViewSegment {
5151
}
5252
}
5353

54-
@MainActor
5554
extension MainTabView {
56-
private func scenePhaseHandler(_ scenePhase: ScenePhase) {
57-
switch scenePhase {
58-
case .active:
55+
private func changedScenePhaseHandler(_ before: ScenePhase, _ after: ScenePhase) {
56+
switch (before, after) {
57+
case (.background, .inactive):
58+
print("Restoring Data")
5959
restoreUserData()
6060
Task { await fetchFriendsTask() }
6161
Task { await fetchFavoritesTask() }
62-
case .background, .inactive:
62+
case (.active, .inactive):
6363
guard let user = appVM.user else { return }
6464
userData = user.rawValue
6565
default: break
@@ -70,7 +70,10 @@ extension MainTabView {
7070
guard let user = User(rawValue: userData) else { return }
7171
appVM.user = user
7272
}
73+
}
7374

75+
@MainActor
76+
extension MainTabView {
7477
private var tabViewLegacy: some View {
7578
TabView(selection: $selection) {
7679
ForEach(MainTabViewSegment.allCases) { tabSegment in

0 commit comments

Comments
 (0)