Skip to content

Commit 7c033e1

Browse files
committed
Beta 3
1 parent 4f14902 commit 7c033e1

File tree

6 files changed

+123
-234
lines changed

6 files changed

+123
-234
lines changed

app/release/app-release.apk

2.72 MB
Binary file not shown.

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</service>-->
3737
<receiver
3838
android:name=".InlineNotificationActivity"
39-
android:exported="false"
39+
android:exported="true"
4040
android:permission="android.permission.INTERNET">
4141
<intent-filter>
4242
<action android:name="QUICK_REPLY_ACTION" />

app/src/main/java/com/troplo/privateuploader/ChatService.kt

Lines changed: 0 additions & 230 deletions
This file was deleted.

app/src/main/java/com/troplo/privateuploader/FirebaseChatService.kt

Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,32 @@ import android.app.PendingIntent
99
import android.content.Context
1010
import android.content.Intent
1111
import android.content.pm.PackageManager
12+
import android.graphics.Bitmap
13+
import android.graphics.BitmapShader
14+
import android.graphics.Canvas
15+
import android.graphics.Paint
16+
import android.graphics.RectF
17+
import android.graphics.Shader
18+
import android.graphics.drawable.BitmapDrawable
19+
import android.os.Bundle
1220
import android.util.Log
1321
import androidx.core.app.ActivityCompat
1422
import androidx.core.app.NotificationCompat
1523
import androidx.core.app.NotificationManagerCompat
1624
import androidx.core.app.Person
1725
import androidx.core.app.RemoteInput
26+
import androidx.core.graphics.drawable.IconCompat
1827
import androidx.work.OneTimeWorkRequest
1928
import androidx.work.WorkManager
2029
import androidx.work.Worker
2130
import androidx.work.WorkerParameters
31+
import coil.request.ImageRequest
32+
import coil.size.Size
2233
import com.google.firebase.messaging.FirebaseMessagingService
2334
import com.google.firebase.messaging.RemoteMessage
2435
import com.troplo.privateuploader.api.TpuApi
2536
import com.troplo.privateuploader.api.TpuFunctions
37+
import com.troplo.privateuploader.api.imageLoader
2638
import com.troplo.privateuploader.data.model.FCMTokenRequest
2739
import com.troplo.privateuploader.data.model.MessageEventFirebase
2840
import kotlinx.coroutines.CoroutineScope
@@ -108,6 +120,7 @@ class FirebaseChatService : FirebaseMessagingService() {
108120
}
109121

110122
private fun sendNotification(message: MessageEventFirebase) {
123+
Log.d("Message", message.toString())
111124
Log.d("TPU.Untagged", "[ChatService] Sending notification")
112125

113126
// Add any additional configuration to the notification builder as needed
@@ -159,9 +172,10 @@ class FirebaseChatService : FirebaseMessagingService() {
159172
style.addMessage(msg)
160173
}
161174

162-
val replyIntent = Intent(this, InlineNotificationActivity::class.java)
163-
replyIntent.putExtra("chatId", 69)
164-
val replyPendingIntent = PendingIntent.getBroadcast(this, 0, replyIntent, PendingIntent.FLAG_MUTABLE)
175+
val rep = Intent(this, InlineNotificationActivity::class.java)
176+
rep.replaceExtras(Bundle())
177+
rep.putExtra("chatId", message.associationId)
178+
val replyPendingIntent = PendingIntent.getBroadcast(this, message.associationId, rep, PendingIntent.FLAG_MUTABLE)
165179

166180
val remoteInput = RemoteInput.Builder("content")
167181
.setLabel("Reply")
@@ -184,6 +198,16 @@ class FirebaseChatService : FirebaseMessagingService() {
184198
.setSmallIcon(R.drawable.tpu_logo)
185199
.setWhen(TpuFunctions.getDate(message.createdAt)?.time ?: 0)
186200
.addAction(replyAction)
201+
.setContentIntent(
202+
PendingIntent.getActivity(
203+
this,
204+
message.associationId,
205+
Intent(this, MainActivity::class.java).apply {
206+
putExtra("chatId", message.associationId)
207+
},
208+
PendingIntent.FLAG_MUTABLE
209+
)
210+
)
187211
val res = notificationManager.notify(message.associationId, builder.build())
188212
Log.d("TPU.Untagged", "[ChatService] Notification sent, $res")
189213
} catch (e: Exception) {
@@ -202,4 +226,50 @@ class FirebaseChatService : FirebaseMessagingService() {
202226
return Result.success()
203227
}
204228
}
229+
}
230+
231+
fun asyncLoadIcon(avatar: String?, context: Context, setIcon: (IconCompat?) -> Unit) {
232+
if (avatar.isNullOrEmpty())
233+
setIcon(null)
234+
else {
235+
val request = ImageRequest.Builder(context)
236+
.dispatcher(Dispatchers.IO)
237+
.data(data = TpuFunctions.image(avatar, null))
238+
.apply {
239+
size(Size.ORIGINAL)
240+
}
241+
.target { drawable ->
242+
try {
243+
val bitmap = (drawable as BitmapDrawable).bitmap
244+
val roundedBitmap = createRoundedBitmap(bitmap)
245+
246+
val roundedIcon = IconCompat.createWithBitmap(roundedBitmap)
247+
248+
setIcon(roundedIcon)
249+
} catch (e: Exception) {
250+
Log.d("TPU.Untagged", e.toString())
251+
setIcon(null)
252+
}
253+
}
254+
.build()
255+
imageLoader(context).enqueue(request)
256+
}
257+
}
258+
259+
private fun createRoundedBitmap(bitmap: Bitmap): Bitmap {
260+
return try {
261+
val output = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
262+
val canvas = Canvas(output)
263+
264+
val paint = Paint()
265+
paint.isAntiAlias = true
266+
paint.shader = BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
267+
268+
val rect = RectF(0f, 0f, bitmap.width.toFloat(), bitmap.height.toFloat())
269+
canvas.drawRoundRect(rect, bitmap.width.toFloat(), bitmap.height.toFloat(), paint)
270+
271+
output
272+
} catch (e: Exception) {
273+
bitmap
274+
}
205275
}

app/src/main/java/com/troplo/privateuploader/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import com.troplo.privateuploader.api.TpuApi
1616
import com.troplo.privateuploader.api.stores.UserStore
1717
import com.troplo.privateuploader.ui.theme.PrivateUploaderTheme
1818
import android.Manifest
19+
import android.content.Context
20+
import androidx.core.app.RemoteInput
1921
import com.google.android.gms.common.GoogleApiAvailability
2022

2123
class MainActivity : ComponentActivity() {

0 commit comments

Comments
 (0)