Show error dialogs when attempting to send audio messages to banned or blocked users
This commit is contained in:
@@ -322,6 +322,7 @@ class Controller(object):
|
||||
pub.subscribe(self.user_typing, "user-typing")
|
||||
pub.subscribe(self.get_chat, "order-sent-message")
|
||||
pub.subscribe(self.create_timeline, "create-timeline")
|
||||
pub.subscribe(self.api_error, "api-error")
|
||||
|
||||
def disconnect_events(self):
|
||||
log.debug("Disconnecting some events...")
|
||||
@@ -394,6 +395,10 @@ class Controller(object):
|
||||
buffer.tab.text.SetFocus()
|
||||
buffer.attachments_to_be_sent = attachments_list
|
||||
|
||||
def api_error(self, code):
|
||||
""" Display an understandable error dialog to users. """
|
||||
commonMessages.vk_error(code)
|
||||
|
||||
def download(self, url, filename):
|
||||
""" Download a file to te current user's computer.
|
||||
@ url: The URl from where the file can be directly accessed.
|
||||
|
@@ -14,7 +14,6 @@ import output
|
||||
import logging
|
||||
import keys
|
||||
import application
|
||||
from wxUI.commonMessages import alpha_reminder
|
||||
if hasattr(sys, "frozen"):
|
||||
sys.excepthook = lambda x, y, z: logging.critical(''.join(traceback.format_exception(x, y, z)))
|
||||
from mysc.thread_utils import call_threaded
|
||||
@@ -53,9 +52,6 @@ def setup():
|
||||
from sessionmanager import sessionManager
|
||||
|
||||
log.debug("Created Application mainloop object")
|
||||
if application.is_pyinstaller():
|
||||
log.debug("Showing reminder about next Socializer alpha... ")
|
||||
alpha_reminder()
|
||||
sm = sessionManager.sessionManagerController()
|
||||
sm.show()
|
||||
del sm
|
||||
|
@@ -319,6 +319,8 @@ class vkSession(object):
|
||||
""" Generic function to be called whenever user wants to post something to VK.
|
||||
This function should be capable of uploading all attachments before posting, and send a special event in case the post has failed,
|
||||
So the program can recreate the post and show it back to the user."""
|
||||
# Define a list of error codes that are handled by the application.
|
||||
handled_errors = [7, 900]
|
||||
# ToDo: this function will occasionally be called with attachments already set to post_arguments, example if the user could upload the files but was unable to send the post due to a connection problem.
|
||||
# We should see what can be done (reuploading everything vs using the already added attachments).
|
||||
attachments = ""
|
||||
@@ -331,18 +333,6 @@ class vkSession(object):
|
||||
log.error("Error calling method %s.%s with arguments: %r. Failed during loading attachments. Error: %s" % (parent_endpoint, child_endpoint, post_arguments, str(error)))
|
||||
# Report a failed function here too with same arguments so the client should be able to recreate it again.
|
||||
wx.CallAfter(pub.sendMessage, "postFailed", parent_endpoint=parent_endpoint, child_endpoint=child_endpoint, from_buffer=from_buffer, attachments_list=attachments_list, post_arguments=post_arguments)
|
||||
### ToDo: Let's avoid this piece of code cause it seems VK changes everything to lowercase letters.
|
||||
# VK generally defines all kind of messages under "text", "message" or "body" so let's try with all of those
|
||||
# possible_message_keys = ["text", "message", "body"]
|
||||
# for i in possible_message_keys:
|
||||
# if post_arguments.get(i):
|
||||
# urls = utils.find_urls_in_text(post_arguments[i])
|
||||
# if len(urls) != 0:
|
||||
# if len(attachments) == 0:
|
||||
# attachments = urls[0]
|
||||
# else:
|
||||
# attachments += urls[0]
|
||||
# post_arguments[i] = post_arguments[i].replace(urls[0], "")
|
||||
# After modifying everything, let's update the post arguments if needed.
|
||||
if len(attachments) > 0:
|
||||
if parent_endpoint == "messages":
|
||||
@@ -358,8 +348,12 @@ class vkSession(object):
|
||||
pub.sendMessage("posted", from_buffer=from_buffer)
|
||||
except Exception as error:
|
||||
log.exception("Error calling method %s.%s with arguments: %r. Error: %s" % (parent_endpoint, child_endpoint, post_arguments, str(error)))
|
||||
# Report a failed function here too with same arguments so the client should be able to recreate it again.
|
||||
wx.CallAfter(pub.sendMessage, "postFailed", parent_endpoint=parent_endpoint, child_endpoint=child_endpoint, from_buffer=from_buffer, attachments_list=attachments_list, post_arguments=post_arguments)
|
||||
# Send handled errors to the corresponding function, call the default handler otherwise.
|
||||
if error.code in handled_errors:
|
||||
wx.CallAfter(pub.sendMessage, "api-error", code=error.code)
|
||||
else:
|
||||
# Report a failed function here too with same arguments so the client should be able to recreate it again.
|
||||
wx.CallAfter(pub.sendMessage, "postFailed", parent_endpoint=parent_endpoint, child_endpoint=child_endpoint, from_buffer=from_buffer, attachments_list=attachments_list, post_arguments=post_arguments)
|
||||
|
||||
def upload_attachments(self, attachments, peer_id=None):
|
||||
""" Upload attachments to VK before posting them.
|
||||
|
@@ -81,3 +81,12 @@ def exit():
|
||||
dlg = wx.MessageDialog(None, _("Do you really want to close Socializer?"), _("Exit"), wx.YES_NO|wx.ICON_QUESTION)
|
||||
return dlg.ShowModal()
|
||||
|
||||
def vk_error(code):
|
||||
title = _("VK error")
|
||||
if code == 7:
|
||||
msg = _("You are not allowed to perform this action. Please be sure you are not attempting to post or send a message to a blocked or banned user. Error code 7.")
|
||||
elif code == 900:
|
||||
msg = _("You cannot send messages to users in your blacklist.")
|
||||
else:
|
||||
msg = str(code)
|
||||
return wx.MessageDialog(None, msg, title, wx.ICON_ERROR).ShowModal()
|
Reference in New Issue
Block a user