Mercurial > libervia-web
comparison libervia/web/pages/chat/select/_browser/__init__.py @ 1548:66aa6e140ebb
browser: make `jid_search` more generic:
rel 423
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 09 Aug 2023 00:22:16 +0200 |
parents | 383e1fee29f6 |
children | c6976c5b85a1 |
comparison
equal
deleted
inserted
replaced
1547:383e1fee29f6 | 1548:66aa6e140ebb |
---|---|
1 | |
1 from bridge import AsyncBridge as Bridge | 2 from bridge import AsyncBridge as Bridge |
2 from browser import aio, bind, console as log, document, window | 3 from browser import console as log, document, window |
3 from urllib.parse import urljoin, quote | 4 from cache import cache |
4 from jid_search import JidSearch | 5 from jid_search import JidSearch |
5 from template import Template | |
6 from cache import cache | |
7 from pprint import pp | |
8 | 6 |
9 log.warning = log.warn | 7 log.warning = log.warn |
10 profile = window.profile or "" | |
11 bridge = Bridge() | |
12 | 8 |
13 | 9 |
14 class ChatSelect: | |
15 | |
16 def __init__(self): | |
17 self.search_item_tpl = Template("chat/search_item.html") | |
18 self.chat_items_elt = document["chat_items"] | |
19 | |
20 def show_items(self, items) -> None: | |
21 for item in items: | |
22 search_item_elt = self.search_item_tpl.get_elt({ | |
23 "url": urljoin(f"{window.location.href}/", quote(item["entity"])), | |
24 "item": item, | |
25 "identities": cache.identities | |
26 }) | |
27 self.chat_items_elt <= search_item_elt | |
28 | |
29 def on_empty_search(self): | |
30 items = [ | |
31 { | |
32 "entity": jid_, | |
33 "groups": data["groups"] | |
34 } | |
35 for jid_, data in cache.roster.items() | |
36 ] | |
37 self.chat_items_elt.clear() | |
38 self.show_items(items) | |
39 | |
40 def on_search_filter(self, search_items): | |
41 self.chat_items_elt.clear() | |
42 pp(search_items) | |
43 self.show_items(search_items) | |
44 | |
45 | |
46 chat_select = ChatSelect() | |
47 jid_search = JidSearch( | 10 jid_search = JidSearch( |
48 document["search"], | 11 document["search"], |
49 chat_select.on_search_filter, | 12 document["chat_items"], |
50 chat_select.on_empty_search | |
51 ) | 13 ) |