Skip to content

Commit 65019b2

Browse files
committed
Implement task click action
1 parent 1232634 commit 65019b2

File tree

5 files changed

+53
-20
lines changed

5 files changed

+53
-20
lines changed

app/src/main/java/com/anytypeio/anytype/appwidget/SingleObjectTypeWidget.kt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import androidx.glance.GlanceTheme
1313
import androidx.glance.Image
1414
import androidx.glance.ImageProvider
1515
import androidx.glance.LocalContext
16-
import androidx.glance.action.ActionParameters
1716
import androidx.glance.action.clickable
1817
import androidx.glance.appwidget.GlanceAppWidget
1918
import androidx.glance.appwidget.GlanceAppWidgetReceiver
@@ -36,6 +35,7 @@ import androidx.glance.text.TextStyle
3635
import androidx.glance.unit.ColorProvider
3736
import com.anytypeio.anytype.R
3837
import com.anytypeio.anytype.app.AndroidApplication
38+
import com.anytypeio.anytype.core_models.Relations
3939
import com.anytypeio.anytype.ui.main.MainActivity
4040

4141
class SingleObjectTypeWidgetReceiver: GlanceAppWidgetReceiver() {
@@ -121,16 +121,18 @@ class SingleObjectTypeWidget: GlanceAppWidget() {
121121
color = GlanceTheme.colors.onSurface
122122
),
123123
modifier = GlanceModifier.padding(6.dp),
124-
onClick = {
125-
actionStartActivity(
126-
Intent(
127-
Intent.ACTION_VIEW,
128-
null,
129-
context,
130-
MainActivity::class.java
131-
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
132-
)
133-
},
124+
onClick = actionStartActivity(
125+
Intent(
126+
WIDGET_ACTION_OPEN_TASK,
127+
null,
128+
context,
129+
MainActivity::class.java
130+
).apply {
131+
putExtra(WIDGET_ACTION_TASK_ID, task.id)
132+
putExtra(Relations.SPACE_ID, task.spaceId)
133+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
134+
}
135+
),
134136
maxLines = 1
135137
)
136138
}
@@ -142,7 +144,7 @@ class SingleObjectTypeWidget: GlanceAppWidget() {
142144
text: String,
143145
modifier: GlanceModifier = GlanceModifier,
144146
textStyle: TextStyle,
145-
onClick: (() -> Unit)? = null,
147+
onClick: androidx.glance.action.Action? = null,
146148
maxLines: Int = Int.MAX_VALUE
147149
) {
148150
Row(
@@ -167,6 +169,11 @@ class SingleObjectTypeWidget: GlanceAppWidget() {
167169
Text(text = text, style = textStyle, maxLines = maxLines)
168170
}
169171
}
172+
173+
companion object {
174+
const val WIDGET_ACTION_OPEN_TASK = "com.anytype.WIDGET_ACTION_OPEN_TASK"
175+
const val WIDGET_ACTION_TASK_ID = "com.anytype.WIDGET_ACTION_TASK_ID"
176+
}
170177
}
171178

172179

app/src/main/java/com/anytypeio/anytype/appwidget/TaskWidgetView.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import com.anytypeio.anytype.core_models.ObjectWrapper
66
data class TaskWidgetView(
77
val id: Id,
88
val name: String,
9+
val spaceId: Id?,
910
val isDone: Boolean
1011
)
1112

1213
fun ObjectWrapper.Basic.toTaskWidgetView(): TaskWidgetView {
1314
return TaskWidgetView(
1415
id = id,
1516
name = name ?: "Untitled",
16-
isDone = done == true
17+
isDone = done == true,
18+
spaceId = spaceId
1719
)
1820
}

app/src/main/java/com/anytypeio/anytype/appwidget/WidgetDataProvider.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@ import kotlinx.coroutines.withContext
2727
import timber.log.Timber
2828

2929

30-
data class SingleObjectTypeWidgetView(
31-
val todoObjectType: ObjectWrapper.Type
32-
)
33-
3430
class WidgetDataProvider @Inject constructor(
3531
private val spaceManager: SpaceManager,
3632
private val blockRepository: BlockRepository,

app/src/main/java/com/anytypeio/anytype/ui/main/MainActivity.kt

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ import android.content.Intent
66
import android.content.pm.PackageManager
77
import android.graphics.Color
88
import android.os.Bundle
9+
import android.view.View
910
import androidx.activity.SystemBarStyle
1011
import androidx.activity.enableEdgeToEdge
1112
import androidx.activity.viewModels
13+
import androidx.annotation.DrawableRes
1214
import androidx.appcompat.app.AppCompatActivity
1315
import androidx.compose.material3.ExperimentalMaterial3Api
1416
import androidx.compose.runtime.Composable
@@ -41,6 +43,7 @@ import com.anytypeio.anytype.analytics.base.EventsDictionary
4143
import com.anytypeio.anytype.app.AnytypeNotificationService
4244
import com.anytypeio.anytype.app.AnytypeNotificationService.Companion.NOTIFICATION_TYPE
4345
import com.anytypeio.anytype.app.DefaultAppActionManager
46+
import com.anytypeio.anytype.appwidget.SingleObjectTypeWidget
4447
import com.anytypeio.anytype.core_models.Relations
4548
import com.anytypeio.anytype.core_models.ThemeMode
4649
import com.anytypeio.anytype.core_models.multiplayer.SpaceUxType
@@ -285,7 +288,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr
285288
findNavController(R.id.fragment).navigate(
286289
R.id.paymentsScreen,
287290
MembershipFragment.args(tierId = command.tierId),
288-
NavOptions.Builder().setLaunchSingleTop(true).build()
291+
Builder().setLaunchSingleTop(true).build()
289292
)
290293
}.onFailure {
291294
Timber.w(it, "Error while navigation for deep link membership tier")
@@ -344,7 +347,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr
344347
/**
345348
* Gets the default fallback drawable resource
346349
*/
347-
@androidx.annotation.DrawableRes
350+
@DrawableRes
348351
private fun getDefaultDrawableResource(): Int = 0
349352

350353
private fun setFragmentLifecycleCallbacks() {
@@ -513,6 +516,17 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr
513516
AnytypePushService.ACTION_OPEN_CHAT -> {
514517
proceedWithOpenChatIntent(intent)
515518
}
519+
SingleObjectTypeWidget.WIDGET_ACTION_OPEN_TASK -> {
520+
val target = intent.getStringExtra(SingleObjectTypeWidget.WIDGET_ACTION_TASK_ID)
521+
val spaceId = intent.getStringExtra(Relations.SPACE_ID)
522+
if (target.isNullOrEmpty() || spaceId.isNullOrEmpty()) {
523+
return
524+
}
525+
vm.onTaskWidgetActionOpen(
526+
target = target,
527+
spaceId = spaceId
528+
)
529+
}
516530
}
517531
}
518532

@@ -798,7 +812,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), AppNavigation.Pr
798812
destinationName = command.destinationName,
799813
spaceName = command.spaceName
800814
)
801-
findViewById<android.view.View>(android.R.id.content)?.showSnackbar(
815+
findViewById<View>(android.R.id.content)?.showSnackbar(
802816
msg = message,
803817
length = Snackbar.LENGTH_INDEFINITE,
804818
actionMessage = getString(R.string.button_ok),

presentation/src/main/java/com/anytypeio/anytype/presentation/main/MainViewModel.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,20 @@ class MainViewModel(
763763
super.onCleared()
764764
}
765765

766+
fun onTaskWidgetActionOpen(target: Id, spaceId: Id) {
767+
Timber.d("onTaskWidgetActionOpen")
768+
viewModelScope.launch {
769+
commands.emit(
770+
Command.Navigate(
771+
OpenObjectNavigation.OpenEditor(
772+
target = target,
773+
space = spaceId
774+
)
775+
)
776+
)
777+
}
778+
}
779+
766780
sealed class Command {
767781
data class ShowDeletedAccountScreen(val deadline: Long) : Command()
768782
data object LogoutDueToAccountDeletion : Command()

0 commit comments

Comments
 (0)