diff --git a/lnbits/extensions/copilot/tasks.py b/lnbits/extensions/copilot/tasks.py
index 48ad7813d..949e0d94b 100644
--- a/lnbits/extensions/copilot/tasks.py
+++ b/lnbits/extensions/copilot/tasks.py
@@ -7,11 +7,11 @@ from starlette.exceptions import HTTPException
from lnbits.core import db as core_db
from lnbits.core.models import Payment
+from lnbits.core.services import websocketUpdater
from lnbits.helpers import get_current_extension_name
from lnbits.tasks import register_invoice_listener
from .crud import get_copilot
-from .views import updater
async def wait_for_paid_invoices():
@@ -65,9 +65,9 @@ async def on_invoice_paid(payment: Payment) -> None:
except (httpx.ConnectError, httpx.RequestError):
await mark_webhook_sent(payment, -1)
if payment.extra.get("comment"):
- await updater(copilot.id, data, payment.extra.get("comment"))
+ await websocketUpdater(copilot.id, str(data) + "-" + str(payment.extra.get("comment")))
- await updater(copilot.id, data, "none")
+ await websocketUpdater(copilot.id, str(data) + "-none")
async def mark_webhook_sent(payment: Payment, status: int) -> None:
diff --git a/lnbits/extensions/copilot/templates/copilot/compose.html b/lnbits/extensions/copilot/templates/copilot/compose.html
index b4022ee0f..ea44114c1 100644
--- a/lnbits/extensions/copilot/templates/copilot/compose.html
+++ b/lnbits/extensions/copilot/templates/copilot/compose.html
@@ -238,7 +238,7 @@
document.domain +
':' +
location.port +
- '/copilot/ws/' +
+ '/api/v1/ws/' +
self.copilot.id
} else {
localUrl =
@@ -246,7 +246,7 @@
document.domain +
':' +
location.port +
- '/copilot/ws/' +
+ '/api/v1/ws/' +
self.copilot.id
}
this.connection = new WebSocket(localUrl)
diff --git a/lnbits/extensions/copilot/views.py b/lnbits/extensions/copilot/views.py
index b4a2354a0..3b1ebf032 100644
--- a/lnbits/extensions/copilot/views.py
+++ b/lnbits/extensions/copilot/views.py
@@ -35,48 +35,3 @@ async def panel(request: Request):
return copilot_renderer().TemplateResponse(
"copilot/panel.html", {"request": request}
)
-
-
-##################WEBSOCKET ROUTES########################
-
-
-class ConnectionManager:
- def __init__(self):
- self.active_connections: List[WebSocket] = []
-
- async def connect(self, websocket: WebSocket, copilot_id: str):
- await websocket.accept()
- websocket.id = copilot_id # type: ignore
- self.active_connections.append(websocket)
-
- def disconnect(self, websocket: WebSocket):
- self.active_connections.remove(websocket)
-
- async def send_personal_message(self, message: str, copilot_id: str):
- for connection in self.active_connections:
- if connection.id == copilot_id: # type: ignore
- await connection.send_text(message)
-
- async def broadcast(self, message: str):
- for connection in self.active_connections:
- await connection.send_text(message)
-
-
-manager = ConnectionManager()
-
-
-@copilot_ext.websocket("/ws/{copilot_id}", name="copilot.websocket_by_id")
-async def websocket_endpoint(websocket: WebSocket, copilot_id: str):
- await manager.connect(websocket, copilot_id)
- try:
- while True:
- data = await websocket.receive_text()
- except WebSocketDisconnect:
- manager.disconnect(websocket)
-
-
-async def updater(copilot_id, data, comment):
- copilot = await get_copilot(copilot_id)
- if not copilot:
- return
- await manager.send_personal_message(f"{data + '-' + comment}", copilot_id)
diff --git a/lnbits/extensions/copilot/views_api.py b/lnbits/extensions/copilot/views_api.py
index 46611a2ea..72ead648b 100644
--- a/lnbits/extensions/copilot/views_api.py
+++ b/lnbits/extensions/copilot/views_api.py
@@ -16,7 +16,7 @@ from .crud import (
update_copilot,
)
from .models import CreateCopilotData
-from .views import updater
+from lnbits.core.services import websocketUpdater
#######################COPILOT##########################
@@ -92,7 +92,7 @@ async def api_copilot_ws_relay(
status_code=HTTPStatus.NOT_FOUND, detail="Copilot does not exist"
)
try:
- await updater(copilot_id, data, comment)
+ await websocketUpdater(copilot_id, str(data) + "-" + str(comment))
except:
raise HTTPException(status_code=HTTPStatus.FORBIDDEN, detail="Not your copilot")
return ""
diff --git a/lnbits/extensions/lnurldevice/tasks.py b/lnbits/extensions/lnurldevice/tasks.py
index d3248ad57..8ad9772ca 100644
--- a/lnbits/extensions/lnurldevice/tasks.py
+++ b/lnbits/extensions/lnurldevice/tasks.py
@@ -8,12 +8,11 @@ from fastapi import HTTPException
from lnbits import bolt11
from lnbits.core.models import Payment
-from lnbits.core.services import pay_invoice
+from lnbits.core.services import pay_invoice, websocketUpdater
from lnbits.helpers import get_current_extension_name
from lnbits.tasks import register_invoice_listener
from .crud import get_lnurldevice, get_lnurldevicepayment, update_lnurldevicepayment
-from .views import updater
async def wait_for_paid_invoices():
@@ -36,9 +35,8 @@ async def on_invoice_paid(payment: Payment) -> None:
lnurldevicepayment = await update_lnurldevicepayment(
lnurldevicepayment_id=payment.extra.get("id"), payhash="used"
)
- return await updater(
+ return await websocketUpdater(
lnurldevicepayment.deviceid,
- lnurldevicepayment.pin,
- lnurldevicepayment.payload,
+ str(lnurldevicepayment.pin) + "-" + str(lnurldevicepayment.payload),
)
return
diff --git a/lnbits/extensions/lnurldevice/templates/lnurldevice/index.html b/lnbits/extensions/lnurldevice/templates/lnurldevice/index.html
index 25dcf8c99..c8488bdf6 100644
--- a/lnbits/extensions/lnurldevice/templates/lnurldevice/index.html
+++ b/lnbits/extensions/lnurldevice/templates/lnurldevice/index.html
@@ -157,8 +157,8 @@
unelevated
color="primary"
size="md"
- @click="copyText(wslocation + '/lnurldevice/ws/' + settingsDialog.data.id, 'Link copied to clipboard!')"
- >{% raw %}{{wslocation}}/lnurldevice/ws/{{settingsDialog.data.id}}{%
+ @click="copyText(wslocation + '/api/v1/ws/' + settingsDialog.data.id, 'Link copied to clipboard!')"
+ >{% raw %}{{wslocation}}/api/v1/ws/{{settingsDialog.data.id}}{%
endraw %} Click to copy URL