Skip to content

Commit 702ad3f

Browse files
committed
feat: improvement preview data
1 parent b729ea3 commit 702ad3f

File tree

5 files changed

+57
-45
lines changed

5 files changed

+57
-45
lines changed

harmonie/Previews/Models/Friend.swift

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,36 @@ extension PreviewData {
2828
}
2929

3030
extension PreviewData.FriendSet {
31+
/// Initialize from world information
3132
init(
32-
id: UUID,
33+
id: UUID = UUID(),
34+
profile: PreviewData.Profile? = PreviewData.Profile.random,
35+
world: World,
36+
status: UserStatus
37+
) {
38+
let location: Location = .id(PreviewData.instanceId(world))
39+
self.init(
40+
friend: Friend(
41+
id: id,
42+
profile: profile,
43+
location: location,
44+
status: status
45+
),
46+
userDetail: PreviewData.userDetail(
47+
id: id,
48+
profile: profile,
49+
location: location,
50+
state: status == .offline ? .offline : .active,
51+
status: status
52+
)
53+
)
54+
}
55+
}
56+
57+
extension PreviewData.FriendSet {
58+
/// Initialize from world information
59+
init(
60+
id: UUID = UUID(),
3361
profile: PreviewData.Profile? = PreviewData.Profile.random,
3462
location: Location,
3563
status: UserStatus

harmonie/Previews/Models/Instance.swift

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,28 @@ extension PreviewData {
1313
Instance(world: bar)
1414
}
1515

16-
static func instance() -> Instance {
16+
static var instance: Instance {
1717
Instance(world: bar)
1818
}
1919

20-
static let instance1 = Instance(world: bar)
21-
static let instance2 = Instance(world: casino)
20+
static func instanceId(_ world: World) -> Instance.ID {
21+
"\(world.id):0"
22+
}
23+
24+
static let instanceMap: [Instance.ID: Instance] = [
25+
instanceId(bar): Instance(world: bar, userCount: 25),
26+
instanceId(casino): Instance(world: casino, userCount: 25),
27+
instanceId(fuji): Instance(world: fuji, userCount: 25),
28+
instanceId(chinatown): Instance(world: chinatown, userCount: 25),
29+
instanceId(nightCity): Instance(world: nightCity, userCount: 25),
30+
]
2231
}
2332

2433
private extension Instance {
25-
init(world: World, instanceId: Int = 0) {
34+
init(world: World, instanceId: Int = 0, capacity: Int = 32, userCount: Int = 0) {
2635
self.init(
2736
active: true,
28-
capacity: 32,
37+
capacity: capacity,
2938
full: false,
3039
groupAccessType: nil,
3140
id: "\(world.id):\(instanceId)",
@@ -35,11 +44,11 @@ private extension Instance {
3544
ownerId: "usr_\(UUID().uuidString)",
3645
permanent: false,
3746
platforms: Platforms(),
38-
recommendedCapacity: 32,
47+
recommendedCapacity: capacity,
3948
region: Region.allCases.randomElement() ?? .us,
4049
tags: [],
4150
type: [.public, .friends].randomElement() ?? .public,
42-
userCount: 0,
51+
userCount: userCount,
4352
world: world
4453
)
4554
}

harmonie/Previews/PreviewData.swift

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,17 @@ final class PreviewData: Sendable {
1818
static let iconImageUrl = URL(string: "\(imageBaseURL)/44/8f/IQToHkKa_o.jpg")
1919

2020
private init() {
21-
let onlineFriendsSet: [FriendSet] = (0..<50).map { count in
22-
let id = UUID()
23-
return switch count {
24-
case ..<5:
25-
FriendSet(id: id, location: .id(Self.instance1.id), status: .active)
26-
case ..<10:
27-
FriendSet(id: id, location: .id(Self.instance2.id), status: .active)
28-
case ..<15:
29-
FriendSet(id: id, location: .id(Self.instance2.id), status: .joinMe)
30-
case ..<20:
31-
FriendSet(id: id, location: .private, status: .askMe)
32-
case ..<25:
33-
FriendSet(id: id, location: .id(Self.instance1.id), status: .joinMe)
34-
case ..<30:
35-
FriendSet(id: id, location: .private, status: .busy)
36-
default:
37-
FriendSet(id: id, location: .offline, status: .offline)
38-
}
39-
}
21+
let onlineFriendsSet: [FriendSet] = [
22+
(0..<10).map { _ in FriendSet(world: Self.bar, status: .joinMe) },
23+
(0..<5).map { _ in FriendSet(world: Self.casino, status: .active) },
24+
(0..<3).map { _ in FriendSet(world: Self.fuji, status: .joinMe) },
25+
(0..<2).map { _ in FriendSet(world: Self.chinatown, status: .active) },
26+
[FriendSet(world: Self.nightCity, status: .joinMe)],
27+
(0..<25).map { _ in FriendSet(location: .private, status: .busy) }
28+
].flatMap { $0 }
4029

4130
var userDetails = onlineFriendsSet.map(\.userDetail)
42-
userDetails.append(PreviewData.userDetail(id: previewUserId, instance: Self.instance1))
31+
userDetails.append(PreviewData.userDetail(id: previewUserId, instance: Self.instance))
4332

4433
self.userDetails = userDetails
4534
self.friends = onlineFriendsSet.map(\.friend)

harmonie/Previews/Services/InstancePreviewService.swift

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,10 @@ final actor InstancePreviewService: APIService, InstanceServiceProtocol {
1313
let client: APIClient
1414

1515
func fetchInstance(location: String) async throws -> Instance {
16-
switch location {
17-
case PreviewData.instance1.id:
18-
PreviewData.instance1
19-
case PreviewData.instance2.id:
20-
PreviewData.instance2
21-
default:
22-
PreviewData.instance1
23-
}
16+
PreviewData.instanceMap[location] ?? PreviewData.instance
2417
}
2518

2619
func fetchInstance(worldId: String, instanceId: String) async throws -> Instance {
27-
switch instanceId {
28-
case PreviewData.instance1.instanceId:
29-
PreviewData.instance1
30-
case PreviewData.instance2.instanceId:
31-
PreviewData.instance2
32-
default:
33-
PreviewData.instance1
34-
}
20+
PreviewData.instanceMap["\(worldId):\(instanceId)"] ?? PreviewData.instance
3521
}
3622
}

harmonie/Views/Location/LocationCardView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct LocationCardView: View {
2121
if isFailure {
2222
EmptyView()
2323
} else {
24-
locationCardContent(instance: instance ?? PreviewData.instance())
24+
locationCardContent(instance: instance ?? PreviewData.instance)
2525
.redacted(reason: isRequesting ? .placeholder : [])
2626
.task {
2727
if case let .id(id) = location.location {

0 commit comments

Comments
 (0)