mirror of
https://github.com/lnbits/lnbits.git
synced 2025-10-11 04:52:34 +02:00
Working!
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "StreamerCopilot",
|
"name": "StreamerCopilot",
|
||||||
"short_description": "Tipping and animations for streamers",
|
"short_description": "Tipping, animations and webhooks for streamers",
|
||||||
"icon": "face",
|
"icon": "face",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"arcbtc"
|
"arcbtc"
|
||||||
|
@@ -30,7 +30,6 @@ class Copilots(NamedTuple):
|
|||||||
timestamp: int
|
timestamp: int
|
||||||
fullscreen_cam: int
|
fullscreen_cam: int
|
||||||
iframe_url: str
|
iframe_url: str
|
||||||
notes: str
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_row(cls, row: Row) -> "Copilots":
|
def from_row(cls, row: Row) -> "Copilots":
|
||||||
|
@@ -10,6 +10,7 @@ from .crud import get_copilot
|
|||||||
from .views import updater
|
from .views import updater
|
||||||
import shortuuid
|
import shortuuid
|
||||||
|
|
||||||
|
|
||||||
async def register_listeners():
|
async def register_listeners():
|
||||||
invoice_paid_chan_send, invoice_paid_chan_recv = trio.open_memory_channel(2)
|
invoice_paid_chan_send, invoice_paid_chan_recv = trio.open_memory_channel(2)
|
||||||
register_invoice_listener(invoice_paid_chan_send)
|
register_invoice_listener(invoice_paid_chan_send)
|
||||||
@@ -25,7 +26,7 @@ async def on_invoice_paid(payment: Payment) -> None:
|
|||||||
webhook = None
|
webhook = None
|
||||||
data = None
|
data = None
|
||||||
if "copilot" != payment.extra.get("tag"):
|
if "copilot" != payment.extra.get("tag"):
|
||||||
# not an lnurlp invoice
|
# not an copilot invoice
|
||||||
return
|
return
|
||||||
|
|
||||||
if payment.extra.get("wh_status"):
|
if payment.extra.get("wh_status"):
|
||||||
@@ -39,7 +40,10 @@ async def on_invoice_paid(payment: Payment) -> None:
|
|||||||
jsonify({"message": "Copilot link link does not exist."}),
|
jsonify({"message": "Copilot link link does not exist."}),
|
||||||
HTTPStatus.NOT_FOUND,
|
HTTPStatus.NOT_FOUND,
|
||||||
)
|
)
|
||||||
if int(copilot.animation1threshold) and int(payment.amount) > copilot.animation1threshold:
|
if (
|
||||||
|
int(copilot.animation1threshold)
|
||||||
|
and int(payment.amount) > copilot.animation1threshold
|
||||||
|
):
|
||||||
data = copilot.animation1
|
data = copilot.animation1
|
||||||
webhook = copilot.animation1webhook
|
webhook = copilot.animation1webhook
|
||||||
if (
|
if (
|
||||||
|
@@ -172,7 +172,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.connection.addEventListener('open', function (event) {
|
this.connection.addEventListener('open', function (event) {
|
||||||
this.connection.send('')
|
this.connection.send('handshake')
|
||||||
})
|
})
|
||||||
var showNotif = this.showNotif
|
var showNotif = this.showNotif
|
||||||
|
|
||||||
|
@@ -103,25 +103,6 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
|
||||||
<div class="col">
|
|
||||||
<q-input
|
|
||||||
v-model="textareaModel"
|
|
||||||
filled
|
|
||||||
class="q-pl-sm q-pr-sm q-pb-sm"
|
|
||||||
clearable
|
|
||||||
type="textarea"
|
|
||||||
label="Notes"
|
|
||||||
></q-input>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<q-btn
|
|
||||||
color="primary"
|
|
||||||
label="Save notes"
|
|
||||||
class="q-ma-sm float-right"
|
|
||||||
></q-btn>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</q-card>
|
</q-card>
|
||||||
|
@@ -13,26 +13,6 @@ import trio
|
|||||||
import shortuuid
|
import shortuuid
|
||||||
from . import copilot_ext
|
from . import copilot_ext
|
||||||
|
|
||||||
connected_websockets = {}
|
|
||||||
|
|
||||||
|
|
||||||
@copilot_ext.websocket("/ws/panel/<copilot_id>")
|
|
||||||
async def ws_panel(copilot_id):
|
|
||||||
global connected_websockets
|
|
||||||
while True:
|
|
||||||
data = await websocket.receive()
|
|
||||||
connected_websockets[copilot_id] = shortuuid.uuid() + "-" + data
|
|
||||||
|
|
||||||
|
|
||||||
@copilot_ext.websocket("/ws/compose/<copilot_id>")
|
|
||||||
async def ws_compose(copilot_id):
|
|
||||||
global connected_websockets
|
|
||||||
|
|
||||||
while True:
|
|
||||||
|
|
||||||
data = await websocket.receive()
|
|
||||||
await websocket.send(connected_websockets[copilot_id])
|
|
||||||
|
|
||||||
|
|
||||||
@copilot_ext.route("/")
|
@copilot_ext.route("/")
|
||||||
@validate_uuids(["usr"], required=True)
|
@validate_uuids(["usr"], required=True)
|
||||||
@@ -65,8 +45,33 @@ async def panel(copilot_id):
|
|||||||
)
|
)
|
||||||
return await render_template("copilot/panel.html", copilot=copilot)
|
return await render_template("copilot/panel.html", copilot=copilot)
|
||||||
|
|
||||||
|
|
||||||
|
##################WEBSOCKET ROUTES########################
|
||||||
|
|
||||||
|
# socket_relay is a list where the control panel or
|
||||||
|
# lnurl endpoints can leave a message for the compose window
|
||||||
|
|
||||||
|
socket_relay = {}
|
||||||
|
|
||||||
|
|
||||||
|
@copilot_ext.websocket("/ws/panel/<copilot_id>")
|
||||||
|
async def ws_panel(copilot_id):
|
||||||
|
global socket_relay
|
||||||
|
while True:
|
||||||
|
data = await websocket.receive()
|
||||||
|
if data == "handshake":
|
||||||
|
await websocket.send(f"willkommen")
|
||||||
|
socket_relay[copilot_id] = shortuuid.uuid()[:5] + "-" + data + "-" + "none"
|
||||||
|
|
||||||
|
|
||||||
|
@copilot_ext.websocket("/ws/compose/<copilot_id>")
|
||||||
|
async def ws_compose(copilot_id):
|
||||||
|
global socket_relay
|
||||||
|
while True:
|
||||||
|
data = await websocket.receive()
|
||||||
|
await websocket.send(socket_relay[copilot_id])
|
||||||
|
|
||||||
|
|
||||||
async def updater(data, comment, copilot):
|
async def updater(data, comment, copilot):
|
||||||
global connected_websockets
|
global socket_relay
|
||||||
connected_websockets[copilot] = (
|
socket_relay[copilot] = shortuuid.uuid()[:5] + "-" + data + "-" + comment
|
||||||
shortuuid.uuid() + "-" + data + "-" + comment
|
|
||||||
)
|
|
||||||
|
@@ -17,7 +17,7 @@ from .crud import (
|
|||||||
delete_copilot,
|
delete_copilot,
|
||||||
)
|
)
|
||||||
|
|
||||||
#############################COPILOT##########################
|
#######################COPILOT##########################
|
||||||
|
|
||||||
|
|
||||||
@copilot_ext.route("/api/v1/copilot", methods=["POST"])
|
@copilot_ext.route("/api/v1/copilot", methods=["POST"])
|
||||||
|
Reference in New Issue
Block a user