created show user profile dialog

This commit is contained in:
Abdulqadir Ahmad
2023-08-10 17:19:58 +01:00
parent d78335407a
commit 1d8fefe7d3
4 changed files with 211 additions and 3 deletions

View File

@@ -139,6 +139,7 @@ class Controller(object):
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.delete, self.view.delete)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.follow, menuitem=self.view.follow)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.send_dm, self.view.dm)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.showUserProfile, self.view.details)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.get_more_items, menuitem=self.view.load_previous_items)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.clear_buffer, menuitem=self.view.clear)
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_buffer, self.view.deleteTl)
@@ -1094,3 +1095,11 @@ class Controller(object):
handler = self.get_handler(buffer.session.type)
if handler:
handler.update_profile(buffer.session)
def showUserProfile(self, *args):
"""Displays a user's profile."""
log.debug("Showing user profile...")
buffer = self.get_best_buffer()
handler = self.get_handler(type=buffer.session.type)
if handler and hasattr(handler, 'showUserProfile'):
handler.showUserProfile(buffer=buffer)

View File

@@ -10,6 +10,7 @@ from wxUI.dialogs.mastodon import dialogs
from wxUI.dialogs import userAliasDialogs
from wxUI import commonMessageDialogs
from wxUI.dialogs.mastodon import updateProfile as update_profile_dialogs
from wxUI.dialogs.mastodon import showUserProfile
from sessions.mastodon.utils import html_filter
from . import userActions, settings
@@ -44,7 +45,7 @@ class Handler(object):
addAlias=_("Add a&lias"),
addToList=None,
removeFromList=None,
details=None,
details=_("Show user profile"),
favs=None,
# In buffer Menu.
trends=None,
@@ -287,4 +288,36 @@ class Handler(object):
if data[key] == updated_data[key]:
del updated_data[key]
log.debug(f"Updating users profile with: {updated_data}")
call_threaded(session.api_call, "account_update_credentials", _("Update profile"), report_success=True, **updated_data)
call_threaded(session.api_call, "account_update_credentials", _("Update profile"), report_success=True, **updated_data)
def showUserProfile(self, buffer):
"""Displays user profile in a dialog."""
log.debug("Scraping for users in handler")
if not hasattr(buffer, 'get_item'):
return # Tell user?
item = buffer.get_item()
if hasattr(item, 'username'):
# item is an account dict
users = [(item.display_name, item.username, item.id)]
elif hasattr(item, 'mentions'):
# statuse
if item.reblog:
item = item.reblog
users = [(user.display_name, user.username, user.id) for user in item.mentions]
users.insert(0, (item.account.display_name, item.account.username, item.account.id))
elif hasattr(item, 'account'):
# Notifications
users = [(item.account.display_name, item.account.username, item.account.id)]
else:
dialogs.no_user()
return
users = list(set(users))
selectedUser = showUserProfile.selectUserDialog(users)
log.debug(f"Selected user = {selectedUser}")
user = buffer.session.api.account(selectedUser[2])
dlg = showUserProfile.ShowUserProfile(
user.display_name, user.url, html_filter(user.note), user.header, user.avatar,
[(field.name, html_filter(field.value)) for field in user.fields], False, False, False)
dlg.ShowModal()