Skip to content

Commit e104499

Browse files
committed
Minor cleanup (IOS-241)
1 parent 925375e commit e104499

File tree

5 files changed

+32
-21
lines changed

5 files changed

+32
-21
lines changed

Mastodon.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@
168168
D85DF9712C481B1100A01408 /* NotificationRequestsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D85DF96E2C481B1100A01408 /* NotificationRequestsTableViewController.swift */; };
169169
D85DF9722C481B1100A01408 /* NotificationRequestTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D85DF96F2C481B1100A01408 /* NotificationRequestTableViewCell.swift */; };
170170
D85DF9742C481B3500A01408 /* DataSourceFacade+Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = D85DF9732C481B3500A01408 /* DataSourceFacade+Notifications.swift */; };
171+
D85DF9762C4965A900A01408 /* NotificationRequestsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D85DF9752C4965A900A01408 /* NotificationRequestsViewModel.swift */; };
171172
D87364F92AE28DB500C8F919 /* Kanna in Frameworks */ = {isa = PBXBuildFile; productRef = D87364F82AE28DB500C8F919 /* Kanna */; };
172173
D87BFC8B291D5C6B00FEE264 /* MastodonLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D87BFC8A291D5C6B00FEE264 /* MastodonLoginView.swift */; };
173174
D87BFC8D291EB81200FEE264 /* MastodonLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D87BFC8C291EB81200FEE264 /* MastodonLoginViewModel.swift */; };
@@ -813,6 +814,7 @@
813814
D85DF96E2C481B1100A01408 /* NotificationRequestsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationRequestsTableViewController.swift; sourceTree = "<group>"; };
814815
D85DF96F2C481B1100A01408 /* NotificationRequestTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationRequestTableViewCell.swift; sourceTree = "<group>"; };
815816
D85DF9732C481B3500A01408 /* DataSourceFacade+Notifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Notifications.swift"; sourceTree = "<group>"; };
817+
D85DF9752C4965A900A01408 /* NotificationRequestsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationRequestsViewModel.swift; sourceTree = "<group>"; };
816818
D87BFC8A291D5C6B00FEE264 /* MastodonLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonLoginView.swift; sourceTree = "<group>"; };
817819
D87BFC8C291EB81200FEE264 /* MastodonLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonLoginViewModel.swift; sourceTree = "<group>"; };
818820
D87BFC8E291EC26A00FEE264 /* MastodonLoginServerTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonLoginServerTableViewCell.swift; sourceTree = "<group>"; };
@@ -1850,6 +1852,7 @@
18501852
children = (
18511853
D85DF96E2C481B1100A01408 /* NotificationRequestsTableViewController.swift */,
18521854
D85DF96F2C481B1100A01408 /* NotificationRequestTableViewCell.swift */,
1855+
D85DF9752C4965A900A01408 /* NotificationRequestsViewModel.swift */,
18531856
);
18541857
name = Requests;
18551858
path = "Notification Filtering/Requests";
@@ -3597,6 +3600,7 @@
35973600
DB6180DD263918E30018D199 /* MediaPreviewViewController.swift in Sources */,
35983601
DBE3CDEC261C6B2900430CC6 /* FavoriteViewController.swift in Sources */,
35993602
DB938EE62623F50700E5B6C1 /* ThreadViewController.swift in Sources */,
3603+
D85DF9762C4965A900A01408 /* NotificationRequestsViewModel.swift in Sources */,
36003604
DB6180F426391D110018D199 /* MediaPreviewImageView.swift in Sources */,
36013605
DBF9814A265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift in Sources */,
36023606
2D939AB525EDD8A90076FA61 /* String.swift in Sources */,

Mastodon/Coordinator/SceneCoordinator.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -564,8 +564,7 @@ private extension SceneCoordinator {
564564
let composeViewController = ComposeViewController(viewModel: viewModel)
565565
viewController = composeViewController
566566
case .notificationRequests(let viewModel):
567-
//FIXME: Put either AuthContext or Everything in ViewModel
568-
viewController = NotificationRequestsTableViewController(viewModel: viewModel, appContext: appContext, coordinator: self)
567+
viewController = NotificationRequestsTableViewController(viewModel: viewModel)
569568
case .notificationPolicy(let viewModel):
570569
viewController = NotificationPolicyViewController(viewModel: viewModel)
571570
case .notificationTimeline(let viewModel):

Mastodon/Protocol/Provider/DataSourceFacade+Notifications.swift

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ extension DataSourceFacade {
1313

1414
do {
1515
let notificationRequests = try await provider.context.apiService.notificationRequests(authenticationBox: provider.authContext.mastodonAuthenticationBox).value
16-
let viewModel = NotificationRequestsViewModel(requests: notificationRequests, authContext: provider.authContext)
16+
let viewModel = NotificationRequestsViewModel(appContext: provider.context, authContext: provider.authContext, coordinator: provider.coordinator, requests: notificationRequests)
1717

1818
provider.coordinator.hideLoading()
1919

@@ -31,17 +31,10 @@ extension DataSourceFacade {
3131
) async {
3232
provider.coordinator.showLoading()
3333

34-
do {
35-
// load notifications for request.account
36-
// show NotificationTimelineViewController with NotificationTimelineViewModel
37-
let notificationTimelineViewModel = NotificationTimelineViewModel(context: provider.context, authContext: provider.authContext, scope: .fromAccount(request.account))
34+
let notificationTimelineViewModel = NotificationTimelineViewModel(context: provider.context, authContext: provider.authContext, scope: .fromAccount(request.account))
3835

39-
provider.coordinator.hideLoading()
40-
provider.coordinator.present(scene: .notificationTimeline(viewModel: notificationTimelineViewModel), transition: .show)
41-
} catch {
42-
//TODO: Error Handling
43-
provider.coordinator.hideLoading()
44-
}
36+
provider.coordinator.hideLoading()
37+
provider.coordinator.present(scene: .notificationTimeline(viewModel: notificationTimelineViewModel), transition: .show)
4538
}
4639

4740
}

Mastodon/Scene/Notification/Notification Filtering/Requests/NotificationRequestsTableViewController.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@ import UIKit
44
import MastodonSDK
55
import MastodonCore
66

7-
struct NotificationRequestsViewModel {
8-
var requests: [Mastodon.Entity.NotificationRequest]
9-
let authContext: AuthContext
10-
}
11-
127
enum NotificationRequestsSection: Hashable {
138
case main
149
}
@@ -30,11 +25,11 @@ class NotificationRequestsTableViewController: UIViewController, NeedsDependency
3025
var viewModel: NotificationRequestsViewModel
3126
var dataSource: UITableViewDiffableDataSource<NotificationRequestsSection, NotificationRequestItem>?
3227

33-
init(viewModel: NotificationRequestsViewModel, appContext: AppContext, coordinator: SceneCoordinator) {
28+
init(viewModel: NotificationRequestsViewModel) {
3429

3530
self.viewModel = viewModel
36-
self.context = appContext
37-
self.coordinator = coordinator
31+
self.context = viewModel.appContext
32+
self.coordinator = viewModel.coordinator
3833

3934
tableView = UITableView(frame: .zero)
4035
tableView.translatesAutoresizingMaskIntoConstraints = false
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright © 2024 Mastodon gGmbH. All rights reserved.
2+
3+
import Foundation
4+
import MastodonSDK
5+
import MastodonCore
6+
7+
struct NotificationRequestsViewModel {
8+
let appContext: AppContext
9+
let authContext: AuthContext
10+
let coordinator: SceneCoordinator
11+
12+
var requests: [Mastodon.Entity.NotificationRequest]
13+
14+
init(appContext: AppContext, authContext: AuthContext, coordinator: SceneCoordinator, requests: [Mastodon.Entity.NotificationRequest]) {
15+
self.appContext = appContext
16+
self.authContext = authContext
17+
self.coordinator = coordinator
18+
self.requests = requests
19+
}
20+
}

0 commit comments

Comments
 (0)