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 )