mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Refactor exchange positions action and add to detail screen
This commit is contained in:
parent
1dc2cf4668
commit
6d5c8d55f1
4 changed files with 55 additions and 27 deletions
|
|
@ -9,6 +9,7 @@
|
|||
/* Begin PBXBuildFile section */
|
||||
251926852C3BA97800249DF5 /* FavoriteNodeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251926842C3BA97800249DF5 /* FavoriteNodeButton.swift */; };
|
||||
251926872C3BAE2200249DF5 /* NodeAlertsButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251926862C3BAE2200249DF5 /* NodeAlertsButton.swift */; };
|
||||
2519268A2C3BB1B200249DF5 /* ExchangePositionsButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 251926892C3BB1B200249DF5 /* ExchangePositionsButton.swift */; };
|
||||
259792252C2F114500AD1659 /* ChannelEntityExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD58C5F12919AD3C00D5BEFB /* ChannelEntityExtension.swift */; };
|
||||
259792262C2F114500AD1659 /* PositionEntityExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD5394FD276BA0EF00AD86B1 /* PositionEntityExtension.swift */; };
|
||||
259792272C2F114500AD1659 /* TraceRouteEntityExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDE5B4052B227E3200FCDD05 /* TraceRouteEntityExtension.swift */; };
|
||||
|
|
@ -226,6 +227,7 @@
|
|||
/* Begin PBXFileReference section */
|
||||
251926842C3BA97800249DF5 /* FavoriteNodeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteNodeButton.swift; sourceTree = "<group>"; };
|
||||
251926862C3BAE2200249DF5 /* NodeAlertsButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeAlertsButton.swift; sourceTree = "<group>"; };
|
||||
251926892C3BB1B200249DF5 /* ExchangePositionsButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExchangePositionsButton.swift; sourceTree = "<group>"; };
|
||||
25AECD4E2C2F723200862C8E /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
|
||||
6D825E612C34786C008DBEE4 /* CommonRegex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonRegex.swift; sourceTree = "<group>"; };
|
||||
6DA39D8D2A92DC52007E311C /* MeshtasticAppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshtasticAppDelegate.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -479,6 +481,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
251926842C3BA97800249DF5 /* FavoriteNodeButton.swift */,
|
||||
251926892C3BB1B200249DF5 /* ExchangePositionsButton.swift */,
|
||||
251926862C3BAE2200249DF5 /* NodeAlertsButton.swift */,
|
||||
);
|
||||
path = Actions;
|
||||
|
|
@ -1232,6 +1235,7 @@
|
|||
DDB6ABE428B13FFF00384BA1 /* DisplayEnums.swift in Sources */,
|
||||
DD4975A52B147BA90026544E /* AmbientLightingConfig.swift in Sources */,
|
||||
D93068D92B81509C0066FBC8 /* TapbackResponses.swift in Sources */,
|
||||
2519268A2C3BB1B200249DF5 /* ExchangePositionsButton.swift in Sources */,
|
||||
DD86D40A287F04F100BAEB7A /* InvalidVersion.swift in Sources */,
|
||||
DDD94A502845C8F5004A87A0 /* DateTimeText.swift in Sources */,
|
||||
DDB6ABE228B13FB500384BA1 /* PositionConfigEnums.swift in Sources */,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
import CoreData
|
||||
import SwiftUI
|
||||
|
||||
struct ExchangePositionsButton: View {
|
||||
var bleManager: BLEManager
|
||||
|
||||
var node: NodeInfoEntity
|
||||
|
||||
@State
|
||||
private var isPresentingPositionSentAlert: Bool = false
|
||||
|
||||
var body: some View {
|
||||
Button {
|
||||
isPresentingPositionSentAlert = bleManager.sendPosition(
|
||||
channel: node.channel,
|
||||
destNum: node.num,
|
||||
wantResponse: true
|
||||
)
|
||||
} label: {
|
||||
Label {
|
||||
Text("Exchange Positions")
|
||||
} icon: {
|
||||
Image(systemName: "arrow.triangle.2.circlepath")
|
||||
.symbolRenderingMode(.hierarchical)
|
||||
}
|
||||
}.alert(
|
||||
"Position Sent",
|
||||
isPresented: $isPresentingPositionSentAlert
|
||||
) {
|
||||
Button("OK") { }.keyboardShortcut(.defaultAction)
|
||||
} message: {
|
||||
Text("Your position has been sent with a request for a response with their position.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -230,6 +230,14 @@ struct NodeDetail: View {
|
|||
user: user
|
||||
)
|
||||
}
|
||||
|
||||
if let connectedPeripheral = bleManager.connectedPeripheral,
|
||||
node.num != connectedPeripheral.num {
|
||||
ExchangePositionsButton(
|
||||
bleManager: bleManager,
|
||||
node: node
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if let metadata = node.metadata,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ struct NodeList: View {
|
|||
@State private var isPresentingTraceRouteSentAlert = false
|
||||
@State private var isPresentingClientHistorySentAlert = false
|
||||
@State private var isPresentingDeleteNodeAlert = false
|
||||
@State private var isPresentingPositionSentAlert = false
|
||||
@State private var deleteNodeId: Int64 = 0
|
||||
@State private var searchText = ""
|
||||
@State private var viaLora = true
|
||||
|
|
@ -76,24 +75,14 @@ struct NodeList: View {
|
|||
user: user
|
||||
)
|
||||
|
||||
if bleManager.connectedPeripheral != nil && node.num != connectedNodeNum {
|
||||
Button {
|
||||
let positionSent = bleManager.sendPosition(
|
||||
channel: node.channel,
|
||||
destNum: node.num,
|
||||
wantResponse: true
|
||||
)
|
||||
if positionSent {
|
||||
isPresentingPositionSentAlert = true
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
|
||||
isPresentingPositionSentAlert = false
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Label("Exchange Positions", systemImage: "arrow.triangle.2.circlepath")
|
||||
}
|
||||
}
|
||||
if bleManager.connectedPeripheral != nil && connectedNodeNum != node.num {
|
||||
if let connectedPeripheral = bleManager.connectedPeripheral,
|
||||
node.num != connectedPeripheral.num {
|
||||
|
||||
ExchangePositionsButton(
|
||||
bleManager: bleManager,
|
||||
node: node
|
||||
)
|
||||
|
||||
Button {
|
||||
let success = bleManager.sendTraceRouteRequest(destNum: node.user?.num ?? 0, wantResponse: true)
|
||||
if success {
|
||||
|
|
@ -131,14 +120,6 @@ struct NodeList: View {
|
|||
}
|
||||
}
|
||||
}
|
||||
.alert(
|
||||
"Position Sent",
|
||||
isPresented: $isPresentingPositionSentAlert
|
||||
) {
|
||||
Button("OK") { }.keyboardShortcut(.defaultAction)
|
||||
} message: {
|
||||
Text("Your position has been sent with a request for a response with their position.")
|
||||
}
|
||||
.alert(
|
||||
"Trace Route Sent",
|
||||
isPresented: $isPresentingTraceRouteSentAlert
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue