Skip to content

Commit 462f58a

Browse files
authored
Merge pull request oxen-io#43 from RyanRory/migrate-to-pyfcm
Migrate to PyFCM
2 parents bc4dc5b + 7877e95 commit 462f58a

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

spns/notifiers/firebase.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
from ..core import SUBSCRIBE
66
from .util import encrypt_notify_payload, derive_notifier_key, warn_on_except, NotifyStats
77

8-
import firebase_admin
9-
from firebase_admin import messaging
8+
from pyfcm import FCMNotification
109

1110
import oxenc
1211
from oxenmq import OxenMQ, Message, Address, AuthLevel
@@ -72,11 +71,13 @@ def push_notification(msg: Message):
7271

7372
device_token = data[b"&"].decode() # unique service id, as we returned from validate
7473

75-
msg = messaging.Message(
76-
data={"enc_payload": oxenc.to_base64(enc_payload), "spns": f"{SPNS_FIREBASE_VERSION}"},
77-
token=device_token,
78-
android=messaging.AndroidConfig(priority="high"),
79-
)
74+
msg = {
75+
'fcm_token': device_token,
76+
'data_payload': {
77+
"enc_payload": oxenc.to_base64(enc_payload),
78+
"spns": f"{SPNS_FIREBASE_VERSION}"
79+
}
80+
}
8081

8182
global notify_queue, queue_lock
8283
with queue_lock:
@@ -91,7 +92,7 @@ def send_pending():
9192

9293
i = 0
9394
while i < len(queue):
94-
results = messaging.send_each(messages=queue[i : i + MAX_NOTIFIES], app=firebase_app)
95+
results = firebase_app.async_notify_multiple_devices(params_list=queue[i : i + MAX_NOTIFIES])
9596
with stats.lock:
9697
stats.notifies += min(len(queue) - i, MAX_NOTIFIES)
9798

@@ -120,7 +121,7 @@ def start():
120121
# restart/reconnect and receive messages sent while we where restarting.
121122
key = derive_notifier_key("firebase")
122123

123-
global omq, hivemind, firebase, queue_timer
124+
global omq, hivemind, firebase_app, queue_timer
124125

125126
omq = OxenMQ(pubkey=key.public_key.encode(), privkey=key.encode())
126127

@@ -143,8 +144,8 @@ def start():
143144
Address(config.config.hivemind_sock), auth_level=AuthLevel.basic, ephemeral_routing_id=False
144145
)
145146

146-
firebase_app = firebase_admin.initialize_app(
147-
firebase_admin.credentials.Certificate(conf["token_file"])
147+
firebase_app = FCMNotification(
148+
service_account_file=conf["token_file"], project_id="loki-5a81e"
148149
)
149150

150151
omq.send(hivemind, "admin.register_service", "firebase")

0 commit comments

Comments
 (0)