Skip to content

Commit 2738939

Browse files
committed
Remove ID from phones PUT
1 parent 34ec793 commit 2738939

7 files changed

Lines changed: 82 additions & 7 deletions

File tree

android/app/src/main/java/com/httpsms/FirebaseMessagingService.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
6767
return Result.failure()
6868
}
6969

70+
if (!Settings.getActiveStatus(applicationContext)) {
71+
Timber.w("user is not active, stopping processing")
72+
return Result.failure()
73+
}
74+
7075
val owner = Settings.getOwner(applicationContext) ?: return Result.failure()
7176
val message = getMessage(applicationContext, owner) ?: return Result.failure()
7277

android/app/src/main/java/com/httpsms/HttpSmsApiService.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class HttpSmsApiService(private val apiKey: String) {
126126
}
127127

128128

129-
fun updatePhone(phoneNumber: String, fcmToken: String) {
129+
fun updatePhone(phoneNumber: String, fcmToken: String): Boolean {
130130
val client = OkHttpClient()
131131

132132
val body = """
@@ -145,11 +145,12 @@ class HttpSmsApiService(private val apiKey: String) {
145145
val response = client.newCall(request).execute()
146146
if (!response.isSuccessful) {
147147
Timber.e("error response [${response.body?.string()}] with code [${response.code}] while sending fcm token [${body}]")
148-
return
148+
return false
149149
}
150150

151151
response.close()
152152
Timber.i("fcm token sent successfully for phone [$phoneNumber]" )
153+
return true
153154
}
154155

155156

android/app/src/main/java/com/httpsms/MainActivity.kt

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class MainActivity : AppCompatActivity() {
4343
setOwner(getPhoneNumber(this))
4444
setActiveStatus(this)
4545
registerListeners()
46-
refreshToken()
46+
refreshToken(this)
4747
}
4848

4949
override fun onResume() {
@@ -52,8 +52,40 @@ class MainActivity : AppCompatActivity() {
5252
redirectToLogin()
5353
}
5454

55-
private fun refreshToken() {
56-
Timber.e("FCM TOKEN: ${Settings.getFcmToken(this)}")
55+
private fun refreshToken(context: Context) {
56+
if(!Settings.hasOwner(context)) {
57+
Timber.w("cannot refresh token because owner does not exist")
58+
return
59+
}
60+
61+
if (Settings.getFcmToken(context) == null) {
62+
Timber.w("cannot refresh token because token does not exist")
63+
return
64+
}
65+
66+
Timber.i("FCM TOKEN: ${Settings.getFcmToken(context)}")
67+
68+
val updateTimestamp = Settings.getFcmTokenLastUpdateTimestamp(context)
69+
Timber.e("FCM_TOKEN_UPDATE_TIMESTAMP: $updateTimestamp")
70+
71+
val interval = 24 * 60 * 60 * 1000 // 1 day
72+
val currentTimeStamp = System.currentTimeMillis()
73+
74+
if (currentTimeStamp - updateTimestamp < interval) {
75+
Timber.i("update interval [${currentTimeStamp - updateTimestamp}] < 24 hours [$interval]")
76+
return
77+
}
78+
79+
Thread {
80+
val updated = HttpSmsApiService(Settings.getApiKeyOrDefault(context))
81+
.updatePhone(Settings.getOwnerOrDefault(context), Settings.getFcmToken(context) ?: "")
82+
if (updated) {
83+
Settings.setFcmTokenLastUpdateTimestampAsync(context, currentTimeStamp)
84+
Timber.i("fcm token uploaded successfully")
85+
return@Thread
86+
}
87+
Timber.e("could not update fcm token")
88+
}.start()
5789
}
5890

5991
private fun initTimber() {

android/app/src/main/java/com/httpsms/ReceivedReceiver.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ class ReceivedReceiver: BroadcastReceiver()
4040
return
4141
}
4242

43+
if (!Settings.getActiveStatus(context)) {
44+
Timber.w("user is not active")
45+
return
46+
}
47+
4348
Thread {
4449
Timber.i("forwarding received message from [${from}]")
4550
HttpSmsApiService(Settings.getApiKeyOrDefault(context)).receive(from, to, content, timestamp)

android/app/src/main/java/com/httpsms/Receiver.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ object Receiver {
1414
Timber.w("cannot handle message with id [$messageId] because the user is not logged in")
1515
return false
1616
}
17+
18+
if (!Settings.getActiveStatus(context)) {
19+
Timber.w("cannot handle message with id [$messageId] because the user is not active")
20+
return false
21+
}
1722
return true
1823
}
1924
}

android/app/src/main/java/com/httpsms/Settings.kt

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ object Settings {
1111
private const val SETTINGS_ACTIVE = "SETTINGS_ACTIVE_STATUS"
1212
private const val SETTINGS_API_KEY = "SETTINGS_API_KEY"
1313
private const val SETTINGS_FCM_TOKEN = "SETTINGS_FCM_TOKEN"
14+
private const val SETTINGS_FCM_TOKEN_UPDATE_TIMESTAMP = "SETTINGS_FCM_TOKEN_UPDATE_TIMESTAMP"
1415

1516
fun getOwner(context: Context): String? {
1617
Timber.d(Settings::getOwner.name)
@@ -28,12 +29,38 @@ object Settings {
2829
return owner
2930
}
3031

32+
fun hasOwner(context: Context): Boolean {
33+
return getOwner(context) != null
34+
}
35+
3136
fun getOwnerOrDefault(context: Context): String {
3237
return getOwner(context) ?: return DEFAULT_PHONE_NUMBER
3338
}
3439

40+
fun getFcmTokenLastUpdateTimestamp(context: Context): Long {
41+
Timber.d(Settings::getFcmTokenLastUpdateTimestamp.name)
42+
43+
val timestamp = PreferenceManager
44+
.getDefaultSharedPreferences(context)
45+
.getLong(this.SETTINGS_FCM_TOKEN_UPDATE_TIMESTAMP,0)
46+
47+
Timber.d("active status: [$timestamp]")
48+
return timestamp
49+
}
50+
51+
52+
fun setFcmTokenLastUpdateTimestampAsync(context: Context, timestamp: Long) {
53+
Timber.d(Settings::setFcmTokenLastUpdateTimestampAsync.name)
54+
55+
PreferenceManager.getDefaultSharedPreferences(context)
56+
.edit()
57+
.putLong(this.SETTINGS_FCM_TOKEN_UPDATE_TIMESTAMP, timestamp)
58+
.apply()
59+
}
60+
61+
3562
fun setOwnerAsync(context: Context, owner: String) {
36-
Timber.d(Settings::getOwner.name)
63+
Timber.d(Settings::setOwnerAsync.name)
3764

3865
PreferenceManager.getDefaultSharedPreferences(context)
3966
.edit()

api/pkg/handlers/phone_handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func NewPhoneHandler(
4040
// RegisterRoutes registers the routes for the PhoneHandler
4141
func (h *PhoneHandler) RegisterRoutes(router fiber.Router) {
4242
router.Get("/phones", h.Index)
43-
router.Put("/phones/:phoneID", h.Upsert)
43+
router.Put("/phones", h.Upsert)
4444
}
4545

4646
// Index returns the phones of a user

0 commit comments

Comments
 (0)