decryption-error-fix
quadrismegistus 4 years ago
parent 50f25f5e8c
commit ca201fb216

@ -128,15 +128,17 @@ class MessagePopup(MDDialog2):
pass
class MessagePopupCard(MDDialog2):
def __init__(self,*x,**y):
y['color_bg']=rgb(*COLOR_BG)
y['color_bg']=rgb(*COLOR_BG,a=0.5)
y['type']='custom'
y['overlay_color']=rgb(*COLOR_BG)
y['overlay_color']=rgb(*COLOR_BG,a=0.5) #rgb(*COLOR_BG)
self.color_bg=rgb(*COLOR_BG)
super().__init__(*x,**y)
self.ok_to_continue=False
self.dismissable=False
def on_dismiss(self):
return True
if not self.dismissable:
return True
def on_touch_down(self,touch):
self.ok_to_continue=True
@ -587,8 +589,10 @@ class MainApp(MDApp, Logger):
@property
def keys(self):
return self.komrade.contacts()
contacts_obj = self.komrade.contacts()
contacts = [p.name for p in contacts_obj]
return contacts
async def get_post(self,post_id):
return self.komrade.read_post()

@ -12,6 +12,9 @@ import asyncio
### Base screens
class BaseScreen(MDScreen):
def on_pre_enter(self):
self.clear_widgets()
@property
def root(self):
return self.app.root
@ -64,6 +67,7 @@ class BaseScreen(MDScreen):
class ProtectedScreen(BaseScreen):
def on_pre_enter(self):
super().on_pre_enter()
if not hasattr(self.app,'is_logged_in') or not self.app.is_logged_in or not hasattr(self.app,'komrade') or not self.app.komrade:
self.root.change_screen('login')
self.log('changing screen???')

@ -280,7 +280,12 @@ class FeedScreen(ProtectedScreen):
def on_pre_enter(self):
if not super().on_pre_enter(): return
# self.root.clear_widgets()
if self.app.map:
self.app.map.dismiss()
self.root.remove_widget(self.app.map)
if not hasattr(self,'get_posts'): self.get_posts=self.app.komrade.posts
for post in self.posts:
self.ids.post_carousel.remove_widget(post)

@ -185,6 +185,9 @@ class LoginScreen(BaseScreen):
# await asyncio.sleep(1)
# return
# remove login layout for now
self.remove_widget(self.layout)
# return
name=un
@ -208,16 +211,17 @@ class LoginScreen(BaseScreen):
self.app.is_logged_in=True
self.app.username=kommie.name
self.app.komrade=kommie
self.remove_widget(self.layout)
self.root.change_screen('feed')
else:
logger.info(f'passkey login failed')
self.login_status.text='Login failed...'
# self.layout.add_widget(self.layout_password)
elif kommie.exists_locally_as_contact():
await self.app.stat('This is a contact of yours')
self.login_status.text='Komrade exists as a contact of yours.'
self.app.change_screen('login')
else:
# await self.app.stat('Account does not exist on hardware, maybe not on server. Try to register?')
# self.login_status.text='Komrade not known on this device. Registering...'
@ -235,6 +239,7 @@ class LoginScreen(BaseScreen):
self.app.change_screen('feed')
else:
self.login_status.text = 'Sign up failed...'
self.app.change_screen('login')
return 1
@ -256,8 +261,6 @@ class LoginScreen(BaseScreen):
await logfunc(f'Welcome, Komrade @{name}. To help us communicate safely, I have cut for you a matching pair of encryption keys.',pause=True,clear=True,komrade_name='Keymaker')
self.app.clear_widget_tree(MDDialog)
self.app.clear_widget_tree(MDDialog2)
# ## 2) Make pub public/private keys
from komrade.backend.keymaker import KomradeAsymmetricKey
@ -298,9 +301,12 @@ class LoginScreen(BaseScreen):
await logfunc(f"In fact this private encryption is so sensitive we'll encrypt it itself before storing it on your device -- locking the key itself away with a password.",pause=True,use_prefix=False)
passphrase = await self.app.get_input('Please enter a memorable password.',
get_pass=True
)
passphrase = None
while not passphrase:
passphrase = await self.app.get_input('Please enter a memorable password.',
get_pass=True
)
passhash = hasher(passphrase)
privkey_decr = KomradeSymmetricKeyWithPassphrase(passhash=passhash)
@ -376,9 +382,6 @@ class LoginScreen(BaseScreen):
await logfunc(f'Congratulations. Welcome, {kommie}.',pause=True,clear=True)
# remove all dialogs!!!!!!!!
self.app.clear_widget_tree(MDDialog)
self.app.clear_widget_tree(MDDialog2)
# last minute: get posts
if 'res_posts' in resp_msg_d and resp_msg_d['res_posts'].get('success'):
id2post=resp_msg_d.get('res_posts').get('posts',{})
@ -392,7 +395,6 @@ class LoginScreen(BaseScreen):
await logfunc('returning...')
from komrade.app.screens.map import MapWidget
return resp_msg_d

@ -164,8 +164,8 @@ class PostScreen(ProtectedScreen):
# self.post_card.author_section_layout.add_widget(self.tmp_msg,1)
self.post_card.author_section_layout.add_widget(self.to_whom_btn,1)
self.to_whom_btn.ids.txt_input.text = '@'
from komrade.constants import WORLD_NAME
self.to_whom_btn.ids.txt_input.text = '@'+WORLD_NAME
#self.to_whom_btn.adaptive_height = True
self.to_whom_btn.ids.txt_input.word_list = ['@'+k for k in self.app.keys if k != self.app.username]
self.to_whom_btn.ids.txt_input.starting_no = 1

@ -13,7 +13,7 @@ from pythemis.exception import ThemisError
# from walrus.tusks.rlite import WalrusLite
import hirlite
LOG_GET_SET = 1
LOG_GET_SET = 0

@ -367,7 +367,12 @@ class KomradeX(Caller):
def contacts(self):
# who do I know?
return sorted([fn.split('.png')[0] for fn in os.listdir(PATH_QRCODES)])
qr_names = sorted([
fn.split('.png')[0] for fn in os.listdir(PATH_QRCODES)
])
ppl = [Komrade(name) for name in qr_names]
ppl = [p for p in ppl if p.exists_locally_as_contact()]
return ppl
### MEETING PEOLPE

@ -228,7 +228,8 @@ class CLI(Logger):
def who(self,whom):
if self.with_required_login():
contacts = self.komrade.contacts()
contacts_obj = self.komrade.contacts()
contacts = [p.name for p in contacts_obj]
self.print(' ' + '\n '.join(contacts))

Loading…
Cancel
Save