Mercurial > libervia-web
comparison libervia/web/pages/chat/select/_browser/__init__.py @ 1547:383e1fee29f6
browser (chat/select): update dynamically JID items when search box is used
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 06 Jul 2023 12:12:07 +0200 |
parents | |
children | 66aa6e140ebb |
comparison
equal
deleted
inserted
replaced
1546:7f3f5ae7d65a | 1547:383e1fee29f6 |
---|---|
1 from bridge import AsyncBridge as Bridge | |
2 from browser import aio, bind, console as log, document, window | |
3 from urllib.parse import urljoin, quote | |
4 from jid_search import JidSearch | |
5 from template import Template | |
6 from cache import cache | |
7 from pprint import pp | |
8 | |
9 log.warning = log.warn | |
10 profile = window.profile or "" | |
11 bridge = Bridge() | |
12 | |
13 | |
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( | |
48 document["search"], | |
49 chat_select.on_search_filter, | |
50 chat_select.on_empty_search | |
51 ) |