From 97deca9c7197b23a9023ad558e42fc27301a5591 Mon Sep 17 00:00:00 2001 From: quadrismegistus Date: Mon, 5 Oct 2020 19:33:53 +0100 Subject: [PATCH] hmm --- comrad/app/main.py | 63 ++++++++++++++++++++------- comrad/app/screens/profile/profile.py | 11 +++++ comrad/backend/comrades.py | 6 ++- 3 files changed, 62 insertions(+), 18 deletions(-) diff --git a/comrad/app/main.py b/comrad/app/main.py index 679612b..a86832e 100644 --- a/comrad/app/main.py +++ b/comrad/app/main.py @@ -797,10 +797,10 @@ class MainApp(MDApp, Logger): async def get_input(self,msg,comrad_name='Telephone',get_pass=False,yesno=False,**y): from comrad.app.screens.feed.feed import PostCardInputPopup - if hasattr(self,'msg_dialog') and self.msg_dialog:# and hasattr(self.msg_dialog,'card') and self.msg_dialog.card: - self.msg_dialog0=self.msg_dialog - self.msg_dialog0.dismiss() - self.msg_dialog0=None + # if hasattr(self,'msg_dialog') and self.msg_dialog:# and hasattr(self.msg_dialog,'card') and self.msg_dialog.card: + # self.msg_dialog0=self.msg_dialog + # self.msg_dialog0.dismiss() + # self.msg_dialog0=None if yesno: self.msg_dialog = BooleanInputPopupCard(msg,comrad_name=comrad_name,**y) @@ -810,10 +810,14 @@ class MainApp(MDApp, Logger): response = await self.msg_dialog.open() logger.info(f'get_input got user response {response}') - async def task(): - await asyncio.sleep(1) + if self.msg_dialog: self.msg_dialog.dismiss() - asyncio.create_task(task()) + self.msg_dialog=None + # async def task(): + # await asyncio.sleep(1) + # self.msg_dialog.dismiss() + # self.msg_dialog=None + # asyncio.create_task(task()) return response async def ring_ring(self,*x,commie=None,**y): @@ -842,10 +846,10 @@ class MainApp(MDApp, Logger): async def stat(self,msg,comrad_name='Telephone',pause=False,get_pass=False,**y): from comrad.app.screens.feed.feed import PostCard,PostCardPopup - if hasattr(self,'msg_dialog') and self.msg_dialog:# and hasattr(self.msg_dialog,'card') and self.msg_dialog.card: - self.msg_dialog0=self.msg_dialog - self.msg_dialog0.dismiss() - self.msg_dialog0.clear_widgets() + # if hasattr(self,'msg_dialog') and self.msg_dialog:# and hasattr(self.msg_dialog,'card') and self.msg_dialog.card: + # self.msg_dialog0=self.msg_dialog + # self.msg_dialog0.dismiss() + # self.msg_dialog0.clear_widgets() self.msg_dialog = MessagePopupCard() @@ -871,8 +875,8 @@ class MainApp(MDApp, Logger): self.msg_dialog.open(animation=False) - if hasattr(self,'msg_dialog0'): - self.root.remove_widget(self.msg_dialog0) + # if hasattr(self,'msg_dialog0'): + # self.root.remove_widget(self.msg_dialog0) await asyncio.sleep(0.1) while not self.msg_dialog.ok_to_continue: @@ -927,15 +931,15 @@ class MainApp(MDApp, Logger): name=meet_name ) await self.stat(f'''Saved {meet_name}'s public key:\n{meet_uri}.''',img_src=fnfn) - self.open_map() await self.stat('Now returning the invitation...') + self.open_map() res = await self.comrad.meet_async(meet_name,returning=True) + self.close_map() if res.get('success'): await self.stat('Invitation successfully sent.') else: await self.stat(res.get('status')) - self.close_map() #delete this msg @@ -945,8 +949,35 @@ class MainApp(MDApp, Logger): - # async def meet(self,other_name,other_uri=None): + async def prompt_meet(self,meet_name,screen=None): + yn=await self.get_input(f"Exchange public keys with {meet_name}? It will allow you and @{meet_name} to read and write encrypted messages to one another.",yesno=True) + if yn: + other_data = {} + path_avatar=os.path.join(PATH_AVATARS,self.comrad.name+'.png') + + if os.path.exists(path_avatar): + yn_avatar = await self.get_input(f'Send along your avatar? Otherwise, you will appear to {meet_name} as the default avatar.',yesno=True) + + if yn_avatar: + with open(path_avatar,'rb') as f: + other_data['img_avatar']=f.read() + + extra_msg = await self.get_input(f'Include a short message to {meet_name}? (optional)') + other_data['extra_msg']=extra_msg.strip() + await self.stat('Sending the invitation...') + self.open_map() + res = await self.comrad.meet_async( + meet_name, + returning=True, + other_data=other_data + ) + self.close_map() + + if res.get('success'): + await self.stat('Invitation successfully sent.') + else: + await self.stat(res.get('status')) diff --git a/comrad/app/screens/profile/profile.py b/comrad/app/screens/profile/profile.py index 7576378..d0c1487 100644 --- a/comrad/app/screens/profile/profile.py +++ b/comrad/app/screens/profile/profile.py @@ -323,6 +323,17 @@ class ProfileScreen(ProtectedScreen): self.author_desc.font_size='18sp' self.author_info_layout.add_widget(self.author_desc) + def on_touch_down(touch): + if self.collide_point(*touch.pos): + asyncio.create_task( + self.app.prompt_meet( + self.app.username + ) + ) + self.author_desc.on_touch_down=on_touch_down + + + # this is a contact else: ## AUTHOR DESCRIPTION diff --git a/comrad/backend/comrades.py b/comrad/backend/comrades.py index 1ba2f5c..1b131f9 100644 --- a/comrad/backend/comrades.py +++ b/comrad/backend/comrades.py @@ -383,7 +383,7 @@ class ComradX(Caller): def meet(self,*x,**y): return asyncio.run(self.meet_async(*x,**y)) - async def meet_async(self,name=None,pubkey=None,returning=False): + async def meet_async(self,name=None,pubkey=None,returning=False,other_data={}): if not name and not pubkey: return {'success':False,'status':'Meet whom?'} @@ -406,7 +406,9 @@ class ComradX(Caller): 'meet_name':name, 'meet_pubkey':pubkey, - 'returning':returning + 'returning':returning, + + **other_data } self.log('msg_to_op',msg_to_op)