Allow unsubscribing from topics
This commit is contained in:
parent
b5ec7b7ffe
commit
28e54a0a31
5 changed files with 45 additions and 7 deletions
|
|
@ -22,6 +22,7 @@
|
|||
9474F1FB28308A2B00CDE4DD /* SubscriptionRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9474F1FA28308A2B00CDE4DD /* SubscriptionRow.swift */; };
|
||||
9474F1FD2831311A00CDE4DD /* AddSubscriptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9474F1FC2831311A00CDE4DD /* AddSubscriptionView.swift */; };
|
||||
9474F1FF28316ACE00CDE4DD /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9474F1FE28316ACE00CDE4DD /* Subscription.swift */; };
|
||||
9474F20128316D1100CDE4DD /* Messenger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9474F20028316D1100CDE4DD /* Messenger.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
|
@ -67,6 +68,7 @@
|
|||
9474F1FA28308A2B00CDE4DD /* SubscriptionRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriptionRow.swift; sourceTree = "<group>"; };
|
||||
9474F1FC2831311A00CDE4DD /* AddSubscriptionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddSubscriptionView.swift; sourceTree = "<group>"; };
|
||||
9474F1FE28316ACE00CDE4DD /* Subscription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Subscription.swift; sourceTree = "<group>"; };
|
||||
9474F20028316D1100CDE4DD /* Messenger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Messenger.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
|
@ -124,6 +126,7 @@
|
|||
9474F1D1282F2D2C00CDE4DD /* AppDelegate.swift */,
|
||||
9474F1F82830835400CDE4DD /* DataController.swift */,
|
||||
9474F1FE28316ACE00CDE4DD /* Subscription.swift */,
|
||||
9474F20028316D1100CDE4DD /* Messenger.swift */,
|
||||
);
|
||||
path = ntfy;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -260,6 +263,7 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9474F1F92830835400CDE4DD /* DataController.swift in Sources */,
|
||||
9474F20128316D1100CDE4DD /* Messenger.swift in Sources */,
|
||||
9474F1D2282F2D2C00CDE4DD /* AppDelegate.swift in Sources */,
|
||||
9474F1C3282F2AA700CDE4DD /* ContentView.swift in Sources */,
|
||||
9474F1FB28308A2B00CDE4DD /* SubscriptionRow.swift in Sources */,
|
||||
|
|
|
|||
|
|
@ -18,9 +18,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
|||
// FirebaseApp.configure() DOES NOT WORK
|
||||
FirebaseConfiguration.shared.setLoggerLevel(.max)
|
||||
Messaging.messaging().delegate = self
|
||||
|
||||
Messaging.messaging().subscribe(toTopic: "philtest")
|
||||
|
||||
|
||||
registerForPushNotifications()
|
||||
UNUserNotificationCenter.current().delegate = self
|
||||
|
||||
|
|
|
|||
23
ntfy/Messenger.swift
Normal file
23
ntfy/Messenger.swift
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
//
|
||||
// Messenger.swift
|
||||
// ntfy
|
||||
//
|
||||
// Created by Philipp Heckel on 5/15/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import FirebaseMessaging
|
||||
import CoreData
|
||||
|
||||
struct Messenger {
|
||||
var context: NSManagedObjectContext
|
||||
|
||||
func subscribe(toTopic topic: String) {
|
||||
Messaging.messaging().subscribe(toTopic: topic)
|
||||
|
||||
let subscription = Subscription(context: context)
|
||||
subscription.baseUrl = "https://ntfy.sh"
|
||||
subscription.topic = topic
|
||||
try? context.save()
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,10 @@
|
|||
import Foundation
|
||||
|
||||
extension Subscription {
|
||||
func forceTopic() -> String {
|
||||
return topic ?? "<unknown>"
|
||||
}
|
||||
|
||||
func displayName() -> String {
|
||||
return topic ?? "<unknown>"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
// https://www.hackingwithswift.com/books/ios-swiftui/how-to-combine-core-data-and-swiftui
|
||||
|
||||
import SwiftUI
|
||||
import CoreData
|
||||
import FirebaseMessaging
|
||||
|
||||
struct SubscriptionsList: View {
|
||||
@Environment(\.managedObjectContext) var context
|
||||
|
|
@ -28,14 +30,13 @@ struct SubscriptionsList: View {
|
|||
|
||||
SubscriptionRow(subscription: subscription)
|
||||
}
|
||||
/*.swipeActions(edge: .trailing) {
|
||||
.swipeActions(edge: .trailing) {
|
||||
Button(role: .destructive) {
|
||||
// subscription.delete()
|
||||
// subscriptions.subscriptions = Database.current.getSubscriptions()
|
||||
unsubscribe(subscription)
|
||||
} label: {
|
||||
Label("Delete", systemImage: "trash.circle")
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
.listStyle(PlainListStyle())
|
||||
|
|
@ -61,6 +62,14 @@ struct SubscriptionsList: View {
|
|||
.navigationViewStyle(StackNavigationViewStyle())
|
||||
}
|
||||
|
||||
func unsubscribe(_ subscription: Subscription) {
|
||||
DispatchQueue.main.async {
|
||||
Messaging.messaging().unsubscribe(fromTopic: subscription.forceTopic())
|
||||
context.delete(subscription)
|
||||
try? context.save()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue