Skip to content

Commit 69fc40c

Browse files
Merge pull request #300 from dekusms/staging
Staging
2 parents da73eaf + e753a89 commit 69fc40c

File tree

17 files changed

+239
-58
lines changed

17 files changed

+239
-58
lines changed

.github/workflows/main.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Run SSH command
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types:
7+
- closed
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Run SSH command
14+
uses: appleboy/ssh-action@master
15+
timeout-minutes: 60
16+
with:
17+
command_timeout: "60m"
18+
host: ${{ secrets.HOST }}
19+
username: ${{ secrets.USERNAME }}
20+
password: ${{ secrets.PASSWORD }}
21+
port: ${{ secrets.PORT }}
22+
script: |
23+
if [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.merged }}" == true ]]; then
24+
if [[ "${{ github.event.pull_request.base.ref }}" == "staging" ]]; then
25+
cd /root/digitalocean_ci_cd_app_releases && ./start.sh
26+
elif [[ "${{ github.event.pull_request.base.ref }}" == "master" ]]; then
27+
cd /root/digitalocean_ci_cd_app_releases && ./start.sh cp && ./start.sh build
28+
fi
29+
else
30+
echo "PR is not merged into '${{ github.event.pull_request.base.ref }}'. Workflow will not run."
31+
exit 1
32+
fi

.idea/misc.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
kotlin version: 2.0.0
2+
error message: Daemon compilation failed: Connection to the Kotlin daemon has been unexpectedly lost. This might be caused by the daemon being killed by another process or the operating system, or by JVM crash.
3+
org.jetbrains.kotlin.gradle.tasks.DaemonCrashedException: Connection to the Kotlin daemon has been unexpectedly lost. This might be caused by the daemon being killed by another process or the operating system, or by JVM crash.
4+
at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.wrapAndRethrowCompilationException(tasksUtils.kt:55)
5+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:243)
6+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159)
7+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111)
8+
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:76)
9+
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
10+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
11+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
12+
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
13+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
14+
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
15+
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
16+
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
17+
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
18+
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
19+
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
20+
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
21+
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
22+
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
23+
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
24+
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
25+
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
26+
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
27+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
28+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
29+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
30+
at org.gradle.internal.Factories$1.create(Factories.java:31)
31+
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
32+
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
33+
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
34+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
35+
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
36+
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
37+
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
38+
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
39+
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
40+
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
41+
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
42+
at java.base/java.lang.Thread.run(Thread.java:840)
43+
Caused by: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
44+
java.io.EOFException
45+
at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:255)
46+
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:165)
47+
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:215)
48+
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:160)
49+
at jdk.proxy4/jdk.proxy4.$Proxy152.compile(Unknown Source)
50+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.incrementalCompilationWithDaemon(GradleKotlinCompilerWork.kt:331)
51+
at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:235)
52+
... 37 more
53+
Caused by: java.io.EOFException
54+
at java.base/java.io.DataInputStream.readUnsignedByte(DataInputStream.java:290)
55+
at java.base/java.io.DataInputStream.readByte(DataInputStream.java:268)
56+
at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:241)
57+
... 43 more
58+
59+

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,5 +296,7 @@ dependencies {
296296
// Needed to use lifecycleScope to collect the WindowLayoutInfo flow
297297
implementation libs.androidx.lifecycle.runtime.ktx
298298

299+
implementation(libs.autolinktext)
300+
299301
}
300302

app/src/main/java/com/afkanerd/deku/DefaultSMS/MainActivity.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package com.afkanerd.deku.DefaultSMS
22

33
import android.Manifest
4+
import android.annotation.SuppressLint
45
import android.app.Activity
6+
import android.app.ComponentCaller
57
import android.content.Intent
68
import android.content.pm.PackageManager
79
import android.net.Uri
810
import android.os.Bundle
911
import android.os.ParcelFileDescriptor
1012
import android.provider.Telephony
1113
import android.text.Layout
14+
import android.util.Log
1215
import android.widget.Toast
1316
import androidx.activity.compose.setContent
1417
import androidx.activity.enableEdgeToEdge
@@ -64,6 +67,7 @@ import java.io.InputStreamReader
6467
import androidx.compose.runtime.getValue
6568
import androidx.compose.runtime.setValue
6669
import androidx.compose.ui.Alignment
70+
import androidx.compose.ui.input.key.type
6771
import androidx.compose.ui.res.stringResource
6872
import androidx.compose.ui.text.font.FontStyle
6973
import androidx.compose.ui.text.style.LineHeightStyle
@@ -107,6 +111,12 @@ class MainActivity : AppCompatActivity(){
107111
}
108112
}
109113

114+
override fun onNewIntent(intent: Intent, caller: ComponentCaller) {
115+
super.onNewIntent(intent, caller)
116+
this.intent = intent
117+
navController.navigate(HomeScreen)
118+
}
119+
110120
private fun checkLoadNatives() {
111121
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext)
112122
if(sharedPreferences.getBoolean(getString(R.string.configs_load_natives), false)){

app/src/main/java/com/afkanerd/deku/DefaultSMS/Models/Notifications.kt

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ import androidx.compose.material3.MaterialTheme
2020
import androidx.compose.runtime.remember
2121
import androidx.compose.ui.Modifier
2222
import androidx.compose.ui.draw.clip
23+
import androidx.compose.ui.graphics.Color
2324
import androidx.compose.ui.graphics.asImageBitmap
2425
import androidx.compose.ui.unit.dp
2526
import androidx.core.app.ActivityCompat
2627
import androidx.core.app.NotificationCompat
2728
import androidx.core.app.NotificationManagerCompat
2829
import androidx.core.app.Person
2930
import androidx.core.app.RemoteInput
31+
import androidx.core.content.ContextCompat
3032
import androidx.core.content.ContextCompat.getString
3133
import androidx.core.content.LocusIdCompat
3234
import androidx.core.content.pm.ShortcutInfoCompat
@@ -40,6 +42,7 @@ import coil3.compose.AsyncImage
4042
import com.afkanerd.deku.DefaultSMS.Commons.Helpers
4143
import com.afkanerd.deku.DefaultSMS.R
4244
import com.afkanerd.deku.DefaultSMS.ui.Components.ConvenientMethods
45+
import com.google.android.material.color.MaterialColors
4346

4447
object Notifications {
4548
const val KEY_TEXT_REPLY = "KEY_TEXT_REPLY"
@@ -103,11 +106,15 @@ object Notifications {
103106
getString(context, R.string.notifications_reply_label),
104107
replyPendingIntent
105108
)
106-
.addRemoteInput(remoteInput)
107-
.setAllowGeneratedReplies(true)
109+
.addRemoteInput(RemoteInput.Builder("extra_remote_reply").setLabel("").build())
108110
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY)
109111
.setShowsUserInterface(false)
110112
.build()
113+
// .addRemoteInput(remoteInput)
114+
// .setAllowGeneratedReplies(true)
115+
// .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY)
116+
// .setShowsUserInterface(false)
117+
// .build()
111118

112119
var muteAction: NotificationCompat.Action? = if(mutePendingIntent == null) null else
113120
NotificationCompat.Action.Builder(
@@ -168,6 +175,7 @@ object Notifications {
168175

169176
return NotificationCompat.Builder(context, channelId)
170177
.setSmallIcon(R.drawable.ic_stat_name)
178+
.setColor(context.getColor(R.color.md_theme_primary))
171179
.setContentTitle(title)
172180
.setContentIntent(pendingIntent)
173181
.setPriority(NotificationCompat.PRIORITY_MAX)
@@ -176,9 +184,9 @@ object Notifications {
176184
.setDefaults(Notification.DEFAULT_ALL)
177185
.setAutoCancel(true)
178186
.setAllowSystemGeneratedContextualActions(true)
179-
.addAction(replyAction)
180187
.addAction(muteAction)
181188
.addAction(markAsReadAction)
189+
.addAction(replyAction)
182190
.setShortcutId(address)
183191
.setBubbleMetadata(bubbleMetadata)
184192
.setLocusId(
@@ -191,9 +199,15 @@ object Notifications {
191199
NotificationCompat.MessagingStyle(title)
192200
.addMessage(text, System.currentTimeMillis(), address)
193201
} else {
194-
NotificationCompat.MessagingStyle(user)
195-
// .setConversationTitle(title)
196-
.addMessage(text, System.currentTimeMillis(), user)
202+
// NotificationCompat.MessagingStyle(user)
203+
// .addMessage(text, System.currentTimeMillis(), user)
204+
NotificationCompat.MessagingStyle(user).addMessage(
205+
NotificationCompat.MessagingStyle.Message(
206+
text,
207+
System.currentTimeMillis(),
208+
user
209+
)
210+
)
197211
}
198212
)
199213
}

app/src/main/java/com/afkanerd/deku/DefaultSMS/ui/Components/Conversations.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,18 @@ import androidx.compose.runtime.remember
2626
import androidx.compose.ui.Alignment
2727
import androidx.compose.ui.Modifier
2828
import androidx.compose.ui.draw.clip
29+
import androidx.compose.ui.graphics.Color
30+
import androidx.compose.ui.platform.LocalInspectionMode
2931
import androidx.compose.ui.res.colorResource
3032
import androidx.compose.ui.res.stringResource
33+
import androidx.compose.ui.text.AnnotatedString
34+
import androidx.compose.ui.text.SpanStyle
35+
import androidx.compose.ui.text.TextLinkStyles
3136
import androidx.compose.ui.text.style.TextAlign
37+
import androidx.compose.ui.text.style.TextDecoration
3238
import androidx.compose.ui.tooling.preview.Preview
3339
import androidx.compose.ui.unit.dp
40+
import sh.calvin.autolinktext.rememberAutoLinkText
3441

3542
enum class ConversationPositionTypes(val value: Int) {
3643
NORMAL(0),
@@ -134,7 +141,14 @@ private fun ConversationReceived(
134141
)
135142
) {
136143
Text(
137-
text=text,
144+
text= AnnotatedString.rememberAutoLinkText(
145+
text,
146+
defaultLinkStyles = TextLinkStyles(
147+
SpanStyle(
148+
textDecoration = TextDecoration.Underline
149+
)
150+
)
151+
),
138152
style = MaterialTheme.typography.bodyMedium,
139153
modifier = Modifier.padding(16.dp),
140154
color = colorResource(R.color.md_theme_onBackground)
@@ -210,7 +224,14 @@ private fun ConversationSent(
210224
)
211225
) {
212226
Text(
213-
text=text,
227+
text= AnnotatedString.rememberAutoLinkText(
228+
text,
229+
defaultLinkStyles = TextLinkStyles(
230+
SpanStyle(
231+
textDecoration = TextDecoration.Underline
232+
)
233+
)
234+
),
214235
style = MaterialTheme.typography.bodyMedium,
215236
modifier = Modifier.padding(16.dp),
216237
color = if(isSelected) MaterialTheme.colorScheme.onPrimaryContainer

app/src/main/java/com/afkanerd/deku/DefaultSMS/ui/Components/ConversationsComponents.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import androidx.compose.foundation.layout.wrapContentSize
2525
import androidx.compose.foundation.rememberScrollState
2626
import androidx.compose.foundation.shape.RoundedCornerShape
2727
import androidx.compose.foundation.text.BasicTextField
28+
import androidx.compose.foundation.text.KeyboardOptions
2829
import androidx.compose.foundation.verticalScroll
2930
import androidx.compose.material.AlertDialog
3031
import androidx.compose.material.Divider
@@ -71,6 +72,7 @@ import androidx.compose.ui.platform.LocalContext
7172
import androidx.compose.ui.platform.LocalInspectionMode
7273
import androidx.compose.ui.res.stringResource
7374
import androidx.compose.ui.text.TextStyle
75+
import androidx.compose.ui.text.input.KeyboardCapitalization
7476
import androidx.compose.ui.text.input.VisualTransformation
7577
import androidx.compose.ui.tooling.preview.Preview
7678
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
@@ -242,6 +244,7 @@ fun ChatCompose(
242244
cursorBrush = SolidColor(MaterialTheme.colorScheme.onBackground),
243245
modifier = Modifier
244246
.fillMaxWidth(),
247+
keyboardOptions = KeyboardOptions(capitalization = KeyboardCapitalization.Sentences)
245248
) {
246249
TextFieldDefaults.DecorationBox(
247250
value = value,

0 commit comments

Comments
 (0)