Added FeedCardView
This commit is contained in:
parent
fba4ed65e9
commit
6507b50666
@ -29,6 +29,8 @@
|
||||
F5A4B1232A5D5F8B00F5AE01 /* BTPeripheral.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5A4B1222A5D5F8B00F5AE01 /* BTPeripheral.swift */; };
|
||||
F5A4B1252A5D7A8D00F5AE01 /* DataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5A4B1242A5D7A8D00F5AE01 /* DataStore.swift */; };
|
||||
F5A4B1272A5D861E00F5AE01 /* SettingsEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5A4B1262A5D861E00F5AE01 /* SettingsEditView.swift */; };
|
||||
F5F1419C2A5EFA3600C81B1A /* LogEntryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F1419B2A5EFA3600C81B1A /* LogEntryView.swift */; };
|
||||
F5F1419E2A5EFA4700C81B1A /* FeedCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F1419D2A5EFA4700C81B1A /* FeedCardView.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@ -74,6 +76,8 @@
|
||||
F5A4B1222A5D5F8B00F5AE01 /* BTPeripheral.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BTPeripheral.swift; sourceTree = "<group>"; };
|
||||
F5A4B1242A5D7A8D00F5AE01 /* DataStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataStore.swift; sourceTree = "<group>"; };
|
||||
F5A4B1262A5D861E00F5AE01 /* SettingsEditView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsEditView.swift; sourceTree = "<group>"; };
|
||||
F5F1419B2A5EFA3600C81B1A /* LogEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogEntryView.swift; sourceTree = "<group>"; };
|
||||
F5F1419D2A5EFA4700C81B1A /* FeedCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedCardView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -176,6 +180,8 @@
|
||||
96BD33152A5C403C007A6E53 /* PeeringView.swift */,
|
||||
F5A4B1202A5D4D1F00F5AE01 /* SettingsView.swift */,
|
||||
F5A4B1262A5D861E00F5AE01 /* SettingsEditView.swift */,
|
||||
F5F1419B2A5EFA3600C81B1A /* LogEntryView.swift */,
|
||||
F5F1419D2A5EFA4700C81B1A /* FeedCardView.swift */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
@ -320,8 +326,10 @@
|
||||
96BD33102A5C27B0007A6E53 /* NewFeedEntryView.swift in Sources */,
|
||||
F5A4B1232A5D5F8B00F5AE01 /* BTPeripheral.swift in Sources */,
|
||||
F5A4B1252A5D7A8D00F5AE01 /* DataStore.swift in Sources */,
|
||||
F5F1419C2A5EFA3600C81B1A /* LogEntryView.swift in Sources */,
|
||||
F5847B6A2A59AB24009E28D4 /* FeedStore.swift in Sources */,
|
||||
F5A4B1272A5D861E00F5AE01 /* SettingsEditView.swift in Sources */,
|
||||
F5F1419E2A5EFA4700C81B1A /* FeedCardView.swift in Sources */,
|
||||
F581F59B2A5AE72F0081C383 /* BluetoothController.swift in Sources */,
|
||||
96454F1D2A558EBC0040BEBD /* ContentView.swift in Sources */,
|
||||
F5A4B1212A5D4D1F00F5AE01 /* SettingsView.swift in Sources */,
|
||||
|
||||
@ -21,14 +21,14 @@ struct ContentView: View {
|
||||
PeeringView()
|
||||
.environmentObject(dataStore)
|
||||
case 1:
|
||||
FeedListView(feeds: [])
|
||||
FeedListView()
|
||||
.environmentObject(dataStore)
|
||||
case 2:
|
||||
SettingsView()
|
||||
.environmentObject(dataStore)
|
||||
.navigationTitle("Settings")
|
||||
default:
|
||||
FeedListView(feeds: [])
|
||||
FeedListView()
|
||||
.environmentObject(dataStore)
|
||||
}
|
||||
HStack {
|
||||
|
||||
@ -8,8 +8,9 @@
|
||||
import SwiftUI
|
||||
|
||||
@MainActor
|
||||
class FeedStore: ObservableObject {
|
||||
class FeedStore: ObservableObject, Identifiable {
|
||||
|
||||
let id: UUID = UUID()
|
||||
@Published var feed: Feed
|
||||
|
||||
init(feed: Feed) {
|
||||
|
||||
@ -13,7 +13,7 @@ struct LogEntry: Codable {
|
||||
let sequenceNumber: Int
|
||||
let body: Body
|
||||
|
||||
init(feedid: String, sequenceNumber: Int, body: Body) {
|
||||
init(feedid: String = "", sequenceNumber: Int = 0, body: Body = Body()) {
|
||||
self.feedid = feedid
|
||||
self.sequenceNumber = sequenceNumber
|
||||
self.body = body
|
||||
|
||||
40
RippleChat/Views/FeedCardView.swift
Normal file
40
RippleChat/Views/FeedCardView.swift
Normal file
@ -0,0 +1,40 @@
|
||||
//
|
||||
// FeedDetailView.swift
|
||||
// RippleChat
|
||||
//
|
||||
// Created by Severin Memmishofer on 12.07.23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct FeedCardView: View {
|
||||
@EnvironmentObject var dataStore: DataStore
|
||||
var feed: Feed
|
||||
|
||||
private var lastLogEntry: LogEntry {
|
||||
if feed.feed.isEmpty {
|
||||
return LogEntry()
|
||||
} else {
|
||||
return feed.feed.last!
|
||||
}
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack (alignment: .leading) {
|
||||
HStack {
|
||||
Text("feedID: \(feed.feedID)")
|
||||
Spacer()
|
||||
Text("Sequence Number: \(lastLogEntry.sequenceNumber)")
|
||||
}
|
||||
Text("Log Entry: \(lastLogEntry.body.value)")
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
|
||||
struct FeedDetailView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
FeedCardView(feed: Feed.sampleFeed)
|
||||
.environmentObject(DataStore.sampleDataStore)
|
||||
}
|
||||
}
|
||||
@ -8,9 +8,6 @@
|
||||
import SwiftUI
|
||||
|
||||
struct FeedListView: View {
|
||||
@State var feeds: [Feed]
|
||||
@StateObject var store = FeedStore(feed: Feed.sampleFeed)
|
||||
var feedStores = [FeedStore(feed: Feed.sampleFeed), FeedStore(feed: Feed.sampleFeed2)]
|
||||
@EnvironmentObject var dataStore: DataStore
|
||||
|
||||
var body: some View {
|
||||
@ -20,23 +17,21 @@ struct FeedListView: View {
|
||||
.foregroundColor(.accentColor)
|
||||
Text("Hello, world!")
|
||||
Button("Save Feed") {
|
||||
Task {
|
||||
do {
|
||||
try await DataStore.sampleDataStore.saveFriends()
|
||||
try await DataStore.sampleDataStore.savePersonalID()
|
||||
try await DataStore.sampleDataStore.saveFeedStores()
|
||||
} catch {
|
||||
fatalError(error.localizedDescription)
|
||||
}
|
||||
NavigationStack {
|
||||
List(dataStore.feedStores) { feedStore in
|
||||
NavigationLink(destination: Text(feedStore.feed.feedID)) {
|
||||
FeedCardView(feed: feedStore.feed)
|
||||
}
|
||||
}
|
||||
}
|
||||
Spacer()
|
||||
NewFeedEntryView()
|
||||
}
|
||||
}
|
||||
|
||||
struct FeedListView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
FeedListView(feeds: [])
|
||||
FeedListView()
|
||||
.environmentObject(DataStore.sampleDataStore)
|
||||
}
|
||||
}
|
||||
|
||||
20
RippleChat/Views/FeedView.swift
Normal file
20
RippleChat/Views/FeedView.swift
Normal file
@ -0,0 +1,20 @@
|
||||
//
|
||||
// FeedView.swift
|
||||
// RippleChat
|
||||
//
|
||||
// Created by Severin Memmishofer on 12.07.23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct FeedView: View {
|
||||
var body: some View {
|
||||
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
}
|
||||
|
||||
struct FeedView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
FeedView()
|
||||
}
|
||||
}
|
||||
20
RippleChat/Views/LogEntryView.swift
Normal file
20
RippleChat/Views/LogEntryView.swift
Normal file
@ -0,0 +1,20 @@
|
||||
//
|
||||
// LogEntryView.swift
|
||||
// RippleChat
|
||||
//
|
||||
// Created by Severin Memmishofer on 12.07.23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct LogEntryView: View {
|
||||
var body: some View {
|
||||
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
}
|
||||
|
||||
struct LogEntryView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
LogEntryView()
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user