Added Data Store

This commit is contained in:
severin.memmishofer
2023-07-11 15:19:12 +02:00
parent 18f68031b7
commit e1c606fdda
9 changed files with 107 additions and 11 deletions

View File

@@ -21,6 +21,8 @@ class BluetoothPeripheral: NSObject, ObservableObject {
}
}
// TODO: Change variable names, etc...
extension BluetoothPeripheral: CBPeripheralManagerDelegate {
func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
switch peripheral.state {
@@ -44,12 +46,7 @@ extension BluetoothPeripheral: CBPeripheralManagerDelegate {
func addServices() {
let value = Feed.sampleFeed
// let valueData = value(using: .utf8)
// 1. Create instance of CBMutableCharcateristic
// let myCharacteristic1 = CBMutableCharacteristic(type: CBUUID(nsuuid: UUID()), properties: [.notify, .write, .read], value: nil, permissions: [.readable, .writeable])
let myCharacteristic = CBMutableCharacteristic(type: BLE_CHARACTERISTIC_UUID_RX, properties: [.read], value: nil, permissions: [.readable])
let myCharacteristic = CBMutableCharacteristic(type: BLE_CHARACTERISTIC_UUID_RX, properties: [.read, .write, .notify], value: nil, permissions: [.readable])
// 2. Create instance of CBMutableService
let myService = CBMutableService(type: BLE_SERVICE_UUID, primary: true)
@@ -65,4 +62,23 @@ extension BluetoothPeripheral: CBPeripheralManagerDelegate {
print("Started Advertising")
}
// func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
//
// messageLabel.text = "Data getting Read"
// readValueLabel.text = value
//
// // Perform your additional operations here
//
// }
//
// func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveWrite requests: [CBATTRequest]) {
//
// messageLabel.text = "Writing Data"
//
// if let value = requests.first?.value {
// writeValueLabel.text = value.hexEncodedString()
// //Perform here your additional operations on the data you get
// }
// }
}

View File

@@ -10,16 +10,23 @@ import CoreBluetooth
struct ContentView: View {
@State var currentView = 0
@EnvironmentObject var dataStore: DataStore
var body: some View {
VStack {
switch self.currentView {
case 0: PeeringView()
case 1: FeedListView(feeds: [])
case 2: SettingsView()
case 0:
PeeringView()
.environmentObject(dataStore)
case 1:
FeedListView(feeds: [])
.environmentObject(dataStore)
case 2:
SettingsView()
.environmentObject(dataStore)
default:
FeedListView(feeds: [])
.environmentObject(dataStore)
}
}
.padding()
@@ -60,6 +67,7 @@ struct ContentView: View {
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environmentObject(DataStore())
}
}

View File

@@ -0,0 +1,21 @@
//
// DataStore.swift
// RippleChat
//
// Created by Severin Memmishofer on 11.07.23.
//
import SwiftUI
import Foundation
class DataStore: ObservableObject {
@Published var personalID: String
@Published var friends: [String]
@Published var feeds: [Feed]
init(personalID: String = "", friends: [String] = [], feeds: [Feed] = []) {
self.personalID = personalID
self.friends = friends
self.feeds = feeds
}
}

View File

@@ -13,6 +13,7 @@ struct RippleChatApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(DataStore())
}
}
}

View File

@@ -11,6 +11,7 @@ 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 {
Text("FeedListView")
@@ -29,6 +30,8 @@ struct FeedListView: View {
}
}
}
Spacer()
NewFeedEntryView()
}
}

View File

@@ -10,6 +10,7 @@ import SwiftUI
struct PeeringView: View {
@ObservedObject private var bluetoothController = BluetoothController()
@ObservedObject private var bluetoothPeripheral = BluetoothPeripheral()
@EnvironmentObject var dataStore: DataStore
var body: some View {
Text("Peering View")

View File

@@ -0,0 +1,29 @@
//
// SettingsEditView.swift
// RippleChat
//
// Created by Severin Memmishofer on 11.07.23.
//
import SwiftUI
struct SettingsEditView: View {
@EnvironmentObject var dataStore: DataStore
var body: some View {
Form {
Section(header: Text("Personal Feed ID")) {
//TextField("FeedID", text: $scrum.title)
}
Section(header: Text("Friends")) {
}
}
}
}
struct SettingsEditView_Previews: PreviewProvider {
static var previews: some View {
SettingsEditView()
}
}

View File

@@ -8,13 +8,22 @@
import SwiftUI
struct SettingsView: View {
@State private var newEntry: String = ""
@EnvironmentObject var dataStore: DataStore
var body: some View {
Text("Hello, Settings!")
Section(header: Text("Personal Feed ID")) {
Text("Your FeedID is: \(dataStore.personalID)")
}
Section(header: Text("Friends")) {
}
}
}
struct SettingsView_Previews: PreviewProvider {
static var previews: some View {
SettingsView()
.environmentObject(DataStore(personalID: "BOB"))
}
}