const isEnvBrowser = !(window).invokeNative const parentResource = window?.GetParentResourceName ? window.GetParentResourceName() : 'phone-radio' const resourceName = !isEnvBrowser ? parentResource : 'phone-radio' function Post(name, data) { if (isEnvBrowser) return []; return new Promise((resolve, reject) => { $.post(`https://${resourceName}/${name}`, JSON.stringify(data ?? {}), (response) => { resolve(response); }); }) }; const connectHistoryFrequency = async (freq) => { const options = [ { key: 'connect', value: Lang("PHONE_NUI_RADIO_CONNECT_TO") + ' ' + freq } ] const { key } = await OpenSelectorAsync(Lang("PHONE_NUI_RADIO_CONNECT_SELECTOR"), options); if (key !== 'connect') return; connectChannel(freq) } const connectChannel = async (freq) => { if (!privateChannels.find(c => c.frequency == freq)) { Post("setRadio", { freq }) await getHistory() return } const pass = await PromptModalAsync(Lang("PHONE_NUI_RADIO_CONNECT_PASSWORD"), Lang("PHONE_NUI_RADIO_CONNECT_PASSWORD_INFORMATION"), Lang("PHONE_NUI_RADIO_CONNECT_SELECT_PASSWORD")) if (!pass) return const checkPass = await Post("checkPrivateChannel", { freq, pass }) if (!checkPass) return SendPhoneNotificationOld('radio', Lang("PHONE_NOTIFICATION_RADIO_TITLE"), Lang("PHONE_NOTIFICATION_RADIO_INVALID_PASSWORD"), 3000) Post("setRadio", { freq }) await getHistory() } const getHistory = async () => { const history = await Post("getHistory"); if (!history) return; $('#phone-radio-history-container').empty() let str = '' history.forEach(freq => { str += `
  • ${freq}

  • ` }) $('#phone-radio-history-container').append(str) } const initPrivateChannels = () => { $('#phone-radio-private-channels').empty() let str = '' privateChannels.forEach(channel => { str += `
  • ${channel.label}

    ${channel.frequency}

  • ` }) $('#phone-radio-private-channels').append(str) } $(document).on('click', '#phone-frequenz-join-button', async function () { const freq = DOMPurify.sanitize($('#phone-radio-frequenz-input').val()) if (!freq || freq == '') return SendPhoneNotificationOld('radio', Lang('PHONE_NOTIFICATION_RADIO_TITLE'), Lang('PHONE_NOTIFICATION_RADIO_MISSING_FIELDS'), 3000) connectChannel(freq) }); $(document).on('click', '#phone-frequenz-leave-button', async function () { var freq = DOMPurify.sanitize($('#phone-radio-frequenz-input').val()) if (!freq || freq == '') return SendPhoneNotificationOld('radio', Lang('PHONE_NOTIFICATION_RADIO_TITLE'), Lang('PHONE_NOTIFICATION_RADIO_NO_CONNECT'), 3000) await Post("leaveRadio", { freq }) });