Fixed Save Button for new Feed Entries

This commit is contained in:
severin.memmishofer 2023-07-13 14:39:17 +02:00
parent b1dc6bc473
commit b1848da797
5 changed files with 33 additions and 19 deletions

View File

@ -20,7 +20,7 @@
96BD33132A5C400B007A6E53 /* FeedListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96BD33122A5C400B007A6E53 /* FeedListView.swift */; }; 96BD33132A5C400B007A6E53 /* FeedListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96BD33122A5C400B007A6E53 /* FeedListView.swift */; };
96BD33162A5C403C007A6E53 /* PeeringView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96BD33152A5C403C007A6E53 /* PeeringView.swift */; }; 96BD33162A5C403C007A6E53 /* PeeringView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96BD33152A5C403C007A6E53 /* PeeringView.swift */; };
F581F59B2A5AE72F0081C383 /* BluetoothController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F581F59A2A5AE72F0081C383 /* BluetoothController.swift */; }; F581F59B2A5AE72F0081C383 /* BluetoothController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F581F59A2A5AE72F0081C383 /* BluetoothController.swift */; };
F5847B622A599BF4009E28D4 /* Body.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B612A599BF4009E28D4 /* Body.swift */; }; F5847B622A599BF4009E28D4 /* Bodyy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B612A599BF4009E28D4 /* Bodyy.swift */; };
F5847B642A599CC3009E28D4 /* LogEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B632A599CC3009E28D4 /* LogEntry.swift */; }; F5847B642A599CC3009E28D4 /* LogEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B632A599CC3009E28D4 /* LogEntry.swift */; };
F5847B662A599EA4009E28D4 /* Feed.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B652A599EA4009E28D4 /* Feed.swift */; }; F5847B662A599EA4009E28D4 /* Feed.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B652A599EA4009E28D4 /* Feed.swift */; };
F5847B6A2A59AB24009E28D4 /* FeedStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B692A59AB24009E28D4 /* FeedStore.swift */; }; F5847B6A2A59AB24009E28D4 /* FeedStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5847B692A59AB24009E28D4 /* FeedStore.swift */; };
@ -68,7 +68,7 @@
96BD33122A5C400B007A6E53 /* FeedListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListView.swift; sourceTree = "<group>"; }; 96BD33122A5C400B007A6E53 /* FeedListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListView.swift; sourceTree = "<group>"; };
96BD33152A5C403C007A6E53 /* PeeringView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeeringView.swift; sourceTree = "<group>"; }; 96BD33152A5C403C007A6E53 /* PeeringView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeeringView.swift; sourceTree = "<group>"; };
F581F59A2A5AE72F0081C383 /* BluetoothController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothController.swift; sourceTree = "<group>"; }; F581F59A2A5AE72F0081C383 /* BluetoothController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothController.swift; sourceTree = "<group>"; };
F5847B612A599BF4009E28D4 /* Body.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Body.swift; sourceTree = "<group>"; }; F5847B612A599BF4009E28D4 /* Bodyy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bodyy.swift; sourceTree = "<group>"; };
F5847B632A599CC3009E28D4 /* LogEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogEntry.swift; sourceTree = "<group>"; }; F5847B632A599CC3009E28D4 /* LogEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogEntry.swift; sourceTree = "<group>"; };
F5847B652A599EA4009E28D4 /* Feed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feed.swift; sourceTree = "<group>"; }; F5847B652A599EA4009E28D4 /* Feed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feed.swift; sourceTree = "<group>"; };
F5847B692A59AB24009E28D4 /* FeedStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedStore.swift; sourceTree = "<group>"; }; F5847B692A59AB24009E28D4 /* FeedStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedStore.swift; sourceTree = "<group>"; };
@ -139,7 +139,7 @@
F5A4B1222A5D5F8B00F5AE01 /* BTPeripheral.swift */, F5A4B1222A5D5F8B00F5AE01 /* BTPeripheral.swift */,
96454F1E2A558EBD0040BEBD /* Assets.xcassets */, 96454F1E2A558EBD0040BEBD /* Assets.xcassets */,
96454F202A558EBD0040BEBD /* Preview Content */, 96454F202A558EBD0040BEBD /* Preview Content */,
F5847B612A599BF4009E28D4 /* Body.swift */, F5847B612A599BF4009E28D4 /* Bodyy.swift */,
F5847B632A599CC3009E28D4 /* LogEntry.swift */, F5847B632A599CC3009E28D4 /* LogEntry.swift */,
F5847B652A599EA4009E28D4 /* Feed.swift */, F5847B652A599EA4009E28D4 /* Feed.swift */,
F5847B692A59AB24009E28D4 /* FeedStore.swift */, F5847B692A59AB24009E28D4 /* FeedStore.swift */,
@ -321,7 +321,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
F5847B622A599BF4009E28D4 /* Body.swift in Sources */, F5847B622A599BF4009E28D4 /* Bodyy.swift in Sources */,
96BD33162A5C403C007A6E53 /* PeeringView.swift in Sources */, 96BD33162A5C403C007A6E53 /* PeeringView.swift in Sources */,
F5847B662A599EA4009E28D4 /* Feed.swift in Sources */, F5847B662A599EA4009E28D4 /* Feed.swift in Sources */,
96BD33132A5C400B007A6E53 /* FeedListView.swift in Sources */, 96BD33132A5C400B007A6E53 /* FeedListView.swift in Sources */,

View File

@ -8,7 +8,7 @@
import SwiftUI import SwiftUI
import Foundation import Foundation
public struct Body: Codable { public struct Bodyy: Codable {
let tag: String let tag: String
let value: String let value: String

View File

@ -10,7 +10,7 @@ import Foundation
struct Feed: Codable { struct Feed: Codable {
let feedID: String let feedID: String
let feed: [LogEntry] var feed: [LogEntry]
init(feedID: String = "", feed: [LogEntry] = []) { init(feedID: String = "", feed: [LogEntry] = []) {
self.feedID = feedID self.feedID = feedID
@ -25,23 +25,27 @@ struct Feed: Codable {
} }
} }
mutating func appendLogEntry(log: LogEntry) {
self.feed.append(log)
}
} }
extension Feed { extension Feed {
static let sampleData: [LogEntry] = static let sampleData: [LogEntry] =
[ [
LogEntry(feedid: "BOB", sequenceNumber: 1, body: Body(tag: Apps.nam, value: "Bob")), LogEntry(feedid: "BOB", sequenceNumber: 1, body: Bodyy(tag: Apps.nam, value: "Bob")),
LogEntry(feedid: "BOB", sequenceNumber: 2, body: Body(tag: Apps.txt, value: "My first post!")), LogEntry(feedid: "BOB", sequenceNumber: 2, body: Bodyy(tag: Apps.txt, value: "My first post!")),
LogEntry(feedid: "BOB", sequenceNumber: 3, body: Body(tag: Apps.txt, value: "Welcome Alice")) LogEntry(feedid: "BOB", sequenceNumber: 3, body: Bodyy(tag: Apps.txt, value: "Welcome Alice"))
] ]
static let sampleData2: [LogEntry] = static let sampleData2: [LogEntry] =
[ [
LogEntry(feedid: "ALI", sequenceNumber: 1, body: Body(tag: Apps.nam, value: "Alice")), LogEntry(feedid: "ALI", sequenceNumber: 1, body: Bodyy(tag: Apps.nam, value: "Alice")),
LogEntry(feedid: "ALI", sequenceNumber: 2, body: Body(tag: Apps.txt, value: "Alice' first post!")), LogEntry(feedid: "ALI", sequenceNumber: 2, body: Bodyy(tag: Apps.txt, value: "Alice' first post!")),
LogEntry(feedid: "ALI", sequenceNumber: 3, body: Body(tag: Apps.txt, value: "Welcome Bob")), LogEntry(feedid: "ALI", sequenceNumber: 3, body: Bodyy(tag: Apps.txt, value: "Welcome Bob")),
LogEntry(feedid: "ALI", sequenceNumber: 4, body: Body(tag: Apps.txt, value: "Whaddup DAWG")) LogEntry(feedid: "ALI", sequenceNumber: 4, body: Bodyy(tag: Apps.txt, value: "Whaddup DAWG"))
] ]
static let sampleFeed: Feed = Feed(feedID: "BOB", feed: sampleData) static let sampleFeed: Feed = Feed(feedID: "BOB", feed: sampleData)

View File

@ -13,9 +13,9 @@ struct LogEntry: Codable, Identifiable {
let feedid: String let feedid: String
let sequenceNumber: Int let sequenceNumber: Int
let body: Body let body: Bodyy
init(feedid: String = "", sequenceNumber: Int = 0, body: Body = Body()) { init(feedid: String = "", sequenceNumber: Int = 0, body: Bodyy = Bodyy()) {
self.feedid = feedid self.feedid = feedid
self.sequenceNumber = sequenceNumber self.sequenceNumber = sequenceNumber
self.body = body self.body = body
@ -24,5 +24,5 @@ struct LogEntry: Codable, Identifiable {
} }
extension LogEntry { extension LogEntry {
static let sampleLogEntry = LogEntry(feedid: "BOB", sequenceNumber: 2, body: Body(tag: Apps.txt, value: "My first post!")) static let sampleLogEntry = LogEntry(feedid: "BOB", sequenceNumber: 2, body: Bodyy(tag: Apps.txt, value: "My first post!"))
} }

View File

@ -16,12 +16,22 @@ struct NewFeedEntryView: View {
HStack { HStack {
TextField("Enter your new feed message:", text: $newEntry) TextField("Enter your new feed message:", text: $newEntry)
Button(action: { Button(action: {
let nextSeq = dataStore.personalFeed.getLastLogEntry().sequenceNumber + 1 let nextSeq = dataStore.personalFeed.getLastLogEntry().sequenceNumber + 1
let newBody = Body(tag: Apps.txt, value: newEntry) let newBody = Bodyy(tag: Apps.txt, value: newEntry)
let newLogEntry = LogEntry(feedid: dataStore.personalID, sequenceNumber: nextSeq, body: newBody) let newLogEntry = LogEntry(feedid: dataStore.personalID, sequenceNumber: nextSeq, body: newBody)
dataStore.personalFeed.appendLogEntry(log: newLogEntry)
}) { }) {
Text("Send") Text("Send")
} }
.task {
do {
try await dataStore.savePersonalFeed()
} catch {
// Handle the error
print("Error loading data: \(error)")
fatalError(error.localizedDescription)
}
}
} }
Text("New entry: \(newEntry)") Text("New entry: \(newEntry)")
} }