Skip to content

Commit 9255b7b

Browse files
committed
fix(misc): add timeout and better handling for errors
1 parent 1f1d5ef commit 9255b7b

6 files changed

Lines changed: 37 additions & 16 deletions

File tree

actions/ChangeTextChannel.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ def on_ready(self):
1919
VOICE_CHANNEL_SELECT, self.update_display)
2020

2121
def update_display(self, value: dict):
22-
log.debug("update_display: {0}", value)
22+
pass
2323

2424
def on_tick(self):
25-
pass
25+
if self.channel_id:
26+
self.set_label(self.channel_id)
27+
else:
28+
self.set_label(self.plugin_base.lm.get(
29+
"actions.changetextchannel.update_channel"))
2630

2731
def load_config(self):
2832
super().load_config()
@@ -47,4 +51,5 @@ def on_change_channel_id(self, entry, _):
4751
def on_key_down(self):
4852
settings = self.get_settings()
4953
channel_id = settings.get('channel_id')
50-
self.plugin_base.backend.change_text_channel(channel_id)
54+
if not self.plugin_base.backend.change_text_channel(channel_id):
55+
self.show_error(5)

actions/ChangeVoiceChannelAction.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@ def on_ready(self):
2121
VOICE_CHANNEL_SELECT, self.update_display)
2222

2323
def update_display(self, value: dict):
24-
log.debug("update_display: {0}", value)
24+
pass
2525

2626
def on_tick(self):
2727
if self.current_channel:
2828
self.set_label(self.current_channel)
2929
else:
30-
self.set_label("Join voice channel")
30+
self.set_label(self.plugin_base.lm.get(
31+
"actions.changevoicechannel.update_channel"))
3132

3233
def load_config(self):
3334
super().load_config()
@@ -67,4 +68,5 @@ def event_callback(self, event: InputEvent, data: dict = None):
6768
self.on_dial_down()
6869

6970
def on_key_hold_start(self):
70-
self.plugin_base.backend.change_voice_channel(None)
71+
if not self.plugin_base.backend.change_voice_channel(None):
72+
self.show_error(5)

actions/DeafenAction.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
class DeafenAction(DiscordActionBase):
1010
def __init__(self, *args, **kwargs):
1111
super().__init__(*args, **kwargs)
12-
self.mode: str = None
12+
self.mode: str = 'Toggle'
1313
self.deafened: bool = False
1414
self.label_location: str = 'Bottom'
1515

@@ -25,9 +25,10 @@ def update_display(self, value: dict):
2525

2626
def on_tick(self):
2727
if self.deafened:
28-
self.set_label("Deafened", position=self.label_location)
28+
self.set_label("Deafened", position=self.label_location.lower())
2929
else:
30-
self.set_label("Not Deafened", position=self.label_location)
30+
self.set_label(
31+
"Not\nDeafened", position=self.label_location.lower())
3132

3233
def load_config(self):
3334
super().load_config()
@@ -91,9 +92,10 @@ def on_key_down(self):
9192
match self.mode:
9293
case "Deafen":
9394
if not self.plugin_base.backend.set_deafen(True):
94-
self.show_error()
95+
self.show_error(5)
9596
case "Undeafen":
9697
if not self.plugin_base.backend.set_deafen(False):
97-
self.show_error()
98+
self.show_error(5)
9899
case "Toggle":
99-
self.plugin_base.backend.set_deafen(not self.deafened)
100+
if not self.plugin_base.backend.set_deafen(not self.deafened):
101+
self.show_error(5)

actions/MuteAction.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,10 @@ def on_key_down(self):
9191
match self.mode:
9292
case "Mute":
9393
if not self.plugin_base.backend.set_mute(True):
94-
self.show_error()
94+
self.show_error(5)
9595
case "Unmute":
9696
if not self.plugin_base.backend.set_mute(False):
97-
self.show_error()
97+
self.show_error(5)
9898
case "Toggle":
99-
self.plugin_base.backend.set_mute(not self.muted)
99+
if not self.plugin_base.backend.set_mute(not self.muted):
100+
self.show_error(5)

discordrpc/sockets.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def __init__(self):
1616
def connect(self):
1717
if self.socket is None:
1818
self.socket = socket.socket(socket.AF_UNIX)
19+
self.socket.settimeout(10)
1920
base_path = path = os.environ.get('XDG_RUNTIME_DIR') or os.environ.get(
2021
'TMPDIR') or os.environ.get('TMP') or os.environ.get('TEMP') or '/tmp'
2122
base_path = re.sub(r'\/$', '', path) + '/discord-ipc-{0}'
@@ -46,6 +47,10 @@ def receive(self) -> (int, str):
4647
code = int.from_bytes(header[:4], "little")
4748
length = int.from_bytes(header[4:], "little")
4849
all_data = data[8:]
50+
buffer_size = length - len(all_data)
51+
if buffer_size < 0:
52+
log.debug("buffer size too small")
53+
return 0, {}
4954
data = self.socket.recv(length-len(all_data))
5055
all_data += data
5156
return code, all_data.decode('UTF-8')

locales/en_US.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,11 @@
1111
"actions.mute.label_choice.title": "Display Location",
1212
"actions.base.credentials.authenticated": "Authenticated successfully",
1313
"actions.base.credentials.failed": "Failed to authenticate",
14-
"actions.base.credentials.missing_client_info": "Missing Client ID or Client Secret"
14+
"actions.base.credentials.missing_client_info": "Missing Client ID or Client Secret",
15+
"actions.deafen.choice.title": "Button Press Action",
16+
"actions.deafen.label_choice.title": "Display Location",
17+
"actions.changetextchannel.channel_id": "Channel ID",
18+
"actions.changetextchannel.update_channel": "Configure\nChannel",
19+
"actions.changevoicechannel.channel_id": "Channel ID",
20+
"actions.changevoicechannel.update_channel": "Configure\nChannel"
1521
}

0 commit comments

Comments
 (0)