diff --git a/lib/pages/server_browser.rb b/lib/pages/server_browser.rb index 840aaa6..da32f2f 100644 --- a/lib/pages/server_browser.rb +++ b/lib/pages/server_browser.rb @@ -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 diff --git a/lib/states/prompt_dialog.rb b/lib/states/prompt_dialog.rb index a985bd6..d02ec1e 100644 --- a/lib/states/prompt_dialog.rb +++ b/lib/states/prompt_dialog.rb @@ -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