feat: show relay NOTICE
This commit is contained in:
parent
f244f60c56
commit
1601f71b03
6 changed files with 44 additions and 10 deletions
|
|
@ -13,6 +13,7 @@ class RelayStatus(BaseModel):
|
||||||
num_received_events: Optional[int] = 0
|
num_received_events: Optional[int] = 0
|
||||||
error_counter: Optional[int] = 0
|
error_counter: Optional[int] = 0
|
||||||
error_list: Optional[List] = []
|
error_list: Optional[List] = []
|
||||||
|
notice_list: Optional[List] = []
|
||||||
|
|
||||||
class Relay(BaseModel):
|
class Relay(BaseModel):
|
||||||
id: Optional[str] = None
|
id: Optional[str] = None
|
||||||
|
|
|
||||||
|
|
@ -128,11 +128,13 @@ class Relay:
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def add_notice(self, notice: str):
|
||||||
|
self.notice_list = ([notice] + self.notice_list)[:20]
|
||||||
|
|
||||||
def _on_open(self, _):
|
def _on_open(self, _):
|
||||||
logger.info(f"Connected to relay: '{self.url}'.")
|
logger.info(f"Connected to relay: '{self.url}'.")
|
||||||
self.connected = True
|
self.connected = True
|
||||||
|
|
||||||
|
|
||||||
def _on_close(self, _, status_code, message):
|
def _on_close(self, _, status_code, message):
|
||||||
logger.warning(f"Connection to relay {self.url} closed. Status: '{status_code}'. Message: '{message}'.")
|
logger.warning(f"Connection to relay {self.url} closed. Status: '{status_code}'. Message: '{message}'.")
|
||||||
self.close()
|
self.close()
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import time
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from .filter import Filters
|
from .filter import Filters
|
||||||
from .message_pool import MessagePool
|
from .message_pool import MessagePool, NoticeMessage
|
||||||
from .relay import Relay, RelayPolicy
|
from .relay import Relay, RelayPolicy
|
||||||
from .subscription import Subscription
|
from .subscription import Subscription
|
||||||
|
|
||||||
|
|
@ -80,6 +80,11 @@ class RelayManager:
|
||||||
if relay.policy.should_write:
|
if relay.policy.should_write:
|
||||||
relay.publish(message)
|
relay.publish(message)
|
||||||
|
|
||||||
|
def handle_notice(self, notice: NoticeMessage):
|
||||||
|
relay = next((r for r in self.relays.values() if r.url == notice.url))
|
||||||
|
if relay:
|
||||||
|
relay.add_notice(notice.content)
|
||||||
|
|
||||||
def _open_connection(self, relay: Relay, ssl_options: dict = None, proxy: dict = None):
|
def _open_connection(self, relay: Relay, ssl_options: dict = None, proxy: dict = None):
|
||||||
self.threads[relay.url] = threading.Thread(
|
self.threads[relay.url] = threading.Thread(
|
||||||
target=relay.connect,
|
target=relay.connect,
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,7 @@ class NostrRouter:
|
||||||
my_event = NostrRouter.received_subscription_notices.pop(0)
|
my_event = NostrRouter.received_subscription_notices.pop(0)
|
||||||
# note: we don't send it to the user because we don't know who should receive it
|
# note: we don't send it to the user because we don't know who should receive it
|
||||||
logger.info(f"Relay ('{my_event.url}') notice: '{my_event.content}']")
|
logger.info(f"Relay ('{my_event.url}') notice: '{my_event.content}']")
|
||||||
|
nostr.client.relay_manager.handle_notice(my_event)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,12 +58,15 @@
|
||||||
<div>
|
<div>
|
||||||
⬆️ <span v-text="col.value.sentEvents"></span>
|
⬆️ <span v-text="col.value.sentEvents"></span>
|
||||||
⬇️ <span v-text="col.value.receveidEvents"></span>
|
⬇️ <span v-text="col.value.receveidEvents"></span>
|
||||||
⚠️ <span v-text="col.value.errorCount">
|
<span @click="showLogDataDialog(col.value.errorList)" class="cursor-pointer">
|
||||||
|
⚠️ <span v-text="col.value.errorCount">
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<q-tooltip>
|
<span @click="showLogDataDialog(col.value.noticeList)" class="cursor-pointer float-right">
|
||||||
<span v-for="e in col.value.errorList" v-text="e"></span><br>
|
ⓘ
|
||||||
</q-tooltip>
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="col.name == 'delete'">
|
<div v-else-if="col.name == 'delete'">
|
||||||
|
|
@ -198,6 +201,17 @@
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<q-dialog v-model="logData.show" position="top">
|
||||||
|
<q-card class="q-pa-lg q-pt-xl">
|
||||||
|
<q-input filled dense v-model.trim="logData.data" type="textarea" rows="25" cols="200" label="Log Data"></q-input>
|
||||||
|
|
||||||
|
<div class="row q-mt-lg">
|
||||||
|
<q-btn v-close-popup flat color="grey" class="q-ml-auto">Close</q-btn>
|
||||||
|
</div>
|
||||||
|
</q-card>
|
||||||
|
</q-dialog>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endraw %} {% endblock %} {% block scripts %} {{ window_vars(user) }}
|
{% endraw %} {% endblock %} {% block scripts %} {{ window_vars(user) }}
|
||||||
|
|
||||||
|
|
@ -212,8 +226,8 @@
|
||||||
sentEvents: obj.status.num_sent_events,
|
sentEvents: obj.status.num_sent_events,
|
||||||
receveidEvents: obj.status.num_received_events,
|
receveidEvents: obj.status.num_received_events,
|
||||||
errorCount: obj.status.error_counter,
|
errorCount: obj.status.error_counter,
|
||||||
errorList: obj.status.error_list
|
errorList: obj.status.error_list,
|
||||||
|
noticeList: obj.status.notice_list
|
||||||
}
|
}
|
||||||
|
|
||||||
obj.ping = obj.ping + ' ms'
|
obj.ping = obj.ping + ' ms'
|
||||||
|
|
@ -226,6 +240,7 @@
|
||||||
'HH:mm:ss'
|
'HH:mm:ss'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
console.log('### obj', obj)
|
||||||
return obj
|
return obj
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -239,6 +254,10 @@
|
||||||
relayToAdd: '',
|
relayToAdd: '',
|
||||||
nostrrelayLinks: [],
|
nostrrelayLinks: [],
|
||||||
filter: '',
|
filter: '',
|
||||||
|
logData: {
|
||||||
|
show: false,
|
||||||
|
data: null
|
||||||
|
},
|
||||||
testData: {
|
testData: {
|
||||||
show: false,
|
show: false,
|
||||||
wsConnection: null,
|
wsConnection: null,
|
||||||
|
|
@ -492,6 +511,11 @@
|
||||||
console.warn(error)
|
console.warn(error)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
showLogDataDialog: function (data = []) {
|
||||||
|
console.log('### showLogDataDialog', data)
|
||||||
|
this.logData.data = data.join('\n')
|
||||||
|
this.logData.show = true
|
||||||
|
},
|
||||||
exportlnurldeviceCSV: function () {
|
exportlnurldeviceCSV: function () {
|
||||||
var self = this
|
var self = this
|
||||||
LNbits.utils.exportCSV(self.relayTable.columns, this.nostrLinks)
|
LNbits.utils.exportCSV(self.relayTable.columns, this.nostrLinks)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,8 @@ async def api_get_relays() -> RelayList:
|
||||||
"num_sent_events": r.num_sent_events,
|
"num_sent_events": r.num_sent_events,
|
||||||
"num_received_events": r.num_received_events,
|
"num_received_events": r.num_received_events,
|
||||||
"error_counter": r.error_counter,
|
"error_counter": r.error_counter,
|
||||||
"error_list": r.error_list
|
"error_list": r.error_list,
|
||||||
|
"notice_list": r.notice_list,
|
||||||
},
|
},
|
||||||
ping=r.ping,
|
ping=r.ping,
|
||||||
active=True,
|
active=True,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue