Skip to content

Commit

Permalink
[gateway/settings] set default API URL
Browse files Browse the repository at this point in the history
  • Loading branch information
capcom6 committed Mar 13, 2024
1 parent 1fa7b5e commit f2d8441
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.http.ContentType
import io.ktor.http.HttpHeaders
import io.ktor.http.Url
import io.ktor.http.contentType
import io.ktor.http.hostWithPort
import io.ktor.serialization.gson.gson
import me.capcom.smsgateway.BuildConfig
import me.capcom.smsgateway.domain.MessageState
Expand All @@ -23,6 +25,9 @@ class GatewayApi(
private val baseUrl: String,
private val privateToken: String?
) {
val hostname: String
get() = Url(baseUrl).hostWithPort

private val client = HttpClient(OkHttp) {
install(UserAgent) {
agent = "me.capcom.smsgateway/" + BuildConfig.VERSION_NAME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class GatewayModule(
private var _api: GatewayApi? = null
private val api
get() = _api ?: GatewayApi(
settings.privateUrl ?: PUBLIC_URL,
settings.privateUrl ?: GatewaySettings.PUBLIC_URL,
settings.privateToken
).also { _api = it }

Expand All @@ -42,7 +42,7 @@ class GatewayModule(
fun start(context: Context) {
if (!enabled) return
this._api = GatewayApi(
settings.privateUrl ?: PUBLIC_URL,
settings.privateUrl ?: GatewaySettings.PUBLIC_URL,
settings.privateToken
)

Expand Down Expand Up @@ -116,6 +116,7 @@ class GatewayModule(
)
events.emitEvent(
DeviceRegisteredEvent(
api.hostname,
settings.login,
settings.password,
)
Expand All @@ -139,6 +140,7 @@ class GatewayModule(

events.emitEvent(
DeviceRegisteredEvent(
api.hostname,
response.login,
response.password,
)
Expand Down Expand Up @@ -206,7 +208,5 @@ class GatewayModule(
companion object {
private val job = SupervisorJob()
private val scope = CoroutineScope(job)

private const val PUBLIC_URL = "https://sms.capcom.me/api/mobile/v1"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@ import me.capcom.smsgateway.modules.settings.get
class GatewaySettings(
private val storage: KeyValueStorage,
) {

var enabled: Boolean
get() = storage.get<Boolean>(ENABLED) ?: false
set(value) = storage.set(ENABLED, value)

// TODO: save per server/invalidate on server change/invalidate on unauthorized error
var registrationInfo: GatewayApi.DeviceRegisterResponse?
get() = storage.get(REGISTRATION_INFO)
set(value) = storage.set(REGISTRATION_INFO, value)

val privateUrl: String?
get() = storage.get<String?>(PRIVATE_URL)
get() = storage.get<String?>(CLOUD_URL)
val privateToken: String?
get() = storage.get<String>(PRIVATE_TOKEN)

companion object {
private const val REGISTRATION_INFO = "REGISTRATION_INFO"
private const val ENABLED = "ENABLED"

private const val PRIVATE_URL = "private_url"
private const val CLOUD_URL = "cloud_url"
private const val PRIVATE_TOKEN = "private_token"

const val PUBLIC_URL = "https://sms.capcom.me/api/mobile/v1"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package me.capcom.smsgateway.modules.gateway.events
import me.capcom.smsgateway.modules.events.AppEvent

class DeviceRegisteredEvent(
val server: String,
val login: String,
val password: String,
): AppEvent(NAME) {
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/me/capcom/smsgateway/ui/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ class HomeFragment : Fragment() {
App.instance.gatewayModule.events.events.collect { event ->
val event = event as? DeviceRegisteredEvent ?: return@collect

binding.textRemoteAddress.text = getString(R.string.address_is, event.server)
binding.textRemoteAuth.movementMethod = LinkMovementMethod.getInstance()
binding.textRemoteAuth.text = makeCopyableLink(
Html
Expand Down
19 changes: 19 additions & 0 deletions app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,28 @@ package me.capcom.smsgateway.ui

import android.os.Bundle
import android.text.InputType
import androidx.core.content.edit
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import me.capcom.smsgateway.R
import me.capcom.smsgateway.modules.gateway.GatewaySettings

class SettingsFragment : PreferenceFragmentCompat() {

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)

findPreference<EditTextPreference>("gateway.cloud_url")?.setSummaryProvider {
val hostname = preferenceManager.sharedPreferences?.getString(it.key, null)
if (hostname.isNullOrEmpty()) {
preferenceManager.sharedPreferences?.edit(true) {
putString(it.key, GatewaySettings.PUBLIC_URL)
}
return@setSummaryProvider GatewaySettings.PUBLIC_URL
}
return@setSummaryProvider hostname
}
}

override fun onDisplayPreferenceDialog(preference: Preference) {
Expand All @@ -22,6 +35,12 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
}

if (preference.key == "gateway.cloud_url") {
(preference as EditTextPreference).setOnBindEditTextListener {
it.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI
}
}

super.onDisplayPreferenceDialog(preference)
}

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/layout/fragment_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="@string/settings_cloud_server"
android:text="@string/cloud_server"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />

<TextView
Expand Down Expand Up @@ -115,7 +115,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:text="@string/settings_cloud_server" />
android:text="@string/cloud_server" />
</androidx.appcompat.widget.LinearLayoutCompat>

<androidx.appcompat.widget.SwitchCompat
Expand Down
7 changes: 3 additions & 4 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<string name="tab_text_settings">SETTINGS</string>
<string name="tab_text_messages">MESSAGES</string>
<string name="settings_local_server">Local server</string>
<string name="settings_cloud_server">Cloud server</string>
<string name="cloud_server">Cloud server</string>
<string name="settings_address_is_sms_capcom_me">Address is sms.capcom.me</string>
<string name="settings_start_on_boot">Start on boot</string>
<string name="settings_offline">Offline</string>
Expand Down Expand Up @@ -33,10 +33,9 @@
<string name="encryption">Encryption</string>
<string name="use_empty_to_disable">Use empty to disable</string>
<string name="passphrase">Passphrase</string>
<string name="send_messages_notification">Sending messages...</string>
<string name="private_server">Private Server</string>
<string name="send_messages_notification">Sending messages…</string>
<string name="api_url">API URL</string>
<string name="private_token">Private Token</string>
<string name="use_empty_for_public_server">Use empty for public server</string>
<string name="ignored_for_public_server">Ignored for public server</string>
<string name="address_is">Address is %1$s</string>
</resources>
5 changes: 2 additions & 3 deletions app/src/main/res/xml/root_preferences.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/private_server">
<PreferenceCategory app:title="@string/cloud_server">
<EditTextPreference
app:icon="@drawable/ic_server"
app:key="gateway.private_url"
app:summary="@string/use_empty_for_public_server"
app:key="gateway.cloud_url"
app:title="@string/api_url" />
<EditTextPreference
app:icon="@drawable/ic_token"
Expand Down

0 comments on commit f2d8441

Please sign in to comment.