Improved server nickname validation

This commit is contained in:
2022-03-23 23:04:03 -05:00
parent 4e0b013a93
commit 4e469cb12c
2 changed files with 32 additions and 2 deletions

View File

@@ -448,7 +448,11 @@ class W3DHub
prefill: Store.settings[:server_list_username],
accept_callback: accept_callback,
cancel_callback: cancel_callback,
valid_callback: proc { |entry| entry.length.positive? }
# See: https://gitlab.com/danpaul88/brenbot/-/blob/master/Source/renlog.pm#L136-175
valid_callback: proc do |entry|
entry.length > 1 && entry.length < 30 && (entry =~ /(:|!|&|%| )/i).nil? &&
(entry =~ /[\001\002\037]/).nil? && (entry =~ /\\/).nil?
end
)
end

View File

@@ -30,7 +30,7 @@ class W3DHub
stack(width: 0.5)
button "Accept", width: 0.25 do
@accept_button = button "Accept", width: 0.25 do
if @options[:valid_callback]&.call(@prompt_entry.value)
pop_state
@options[:accept_callback]&.call(@prompt_entry.value)
@@ -38,6 +38,32 @@ class W3DHub
end
end
end
@prompt_entry.subscribe(:changed) do
if @options[:valid_callback]
if @options[:valid_callback].call(@prompt_entry.value)
c = W3DHub::THEME[:Button][:border_color]
@prompt_entry.style.border_color = c
@prompt_entry.style.default[:border_color] = c
@prompt_entry.style.hover[:border_color] = c
@prompt_entry.style.active[:border_color] = c
@accept_button.enabled = true
else
c = 0xff_ff0000
@prompt_entry.style.border_color = c
@prompt_entry.style.default[:border_color] = c
@prompt_entry.style.hover[:border_color] = c
@prompt_entry.style.active[:border_color] = c
@accept_button.enabled = false
end
@prompt_entry.set_border_color
end
end
end
def draw