Fix SMS dropdown JS timing and enable switch logic

pull/687/head
Wabo 2 weeks ago
parent a0249defff
commit eb82d63774

@ -4,6 +4,7 @@
<h1 class="text-4xl font-bold mb-4">SMS</h1> <h1 class="text-4xl font-bold mb-4">SMS</h1>
<% value = @encrypted_config.value || {} %> <% value = @encrypted_config.value || {} %>
<% sms_enabled = Sms.enabled?(current_account) %>
<% sms_live = Sms.enabled_for?(current_account) %> <% sms_live = Sms.enabled_for?(current_account) %>
<% <%
provider_labels = { provider_labels = {
@ -32,6 +33,16 @@
</p> </p>
</div> </div>
</div> </div>
<% elsif sms_enabled %>
<div class="alert alert-warning mb-4">
<%= svg_icon('discount_check_filled', class: 'w-6 h-6') %>
<div>
<p class="font-bold">SMS is enabled but not fully configured</p>
<p class="text-gray-700">
Select a provider below and fill in its credentials, then save.
</p>
</div>
</div>
<% else %> <% else %>
<div class="alert mb-4"> <div class="alert mb-4">
<%= svg_icon('info_circle', class: 'w-6 h-6') %> <%= svg_icon('info_circle', class: 'w-6 h-6') %>
@ -187,16 +198,25 @@
<script> <script>
(function() { (function() {
var select = document.getElementById('sms_provider_select'); function ready(fn) {
if (!select) return; if (document.readyState !== 'loading') {
function sync() { fn();
var v = select.value; } else {
document.querySelectorAll('[data-provider-block]').forEach(function(b) { document.addEventListener('DOMContentLoaded', fn);
b.classList.toggle('hidden', b.dataset.providerBlock !== v); }
});
} }
select.addEventListener('change', sync); ready(function() {
sync(); var select = document.getElementById('sms_provider_select');
if (!select) return;
function sync() {
var v = select.value;
document.querySelectorAll('[data-provider-block]').forEach(function(b) {
b.classList.toggle('hidden', b.dataset.providerBlock !== v);
});
}
select.addEventListener('change', sync);
sync();
});
})(); })();
</script> </script>

@ -20,6 +20,11 @@ module Sms
record&.value record&.value
end end
def enabled?(account)
config = configuration_for(account)
config.is_a?(Hash) && !!config['enabled']
end
def enabled_for?(account) def enabled_for?(account)
config = configuration_for(account) config = configuration_for(account)
return false unless config.is_a?(Hash) return false unless config.is_a?(Hash)

Loading…
Cancel
Save