mirror of
https://github.com/avinal/nikki.git
synced 2026-07-03 21:40:09 +05:30
Add share intent, relative dates, task count badge
Share intent receiver: - ACTION_SEND text/plain intent filter in manifest - Shared text pre-fills compose card via MainActivity → App → AppNavHost → MainScreen → MemoListScreen Relative dates in task parser: - "next monday" through "next sunday" (picks next occurrence) - "next week" (7 days from today) - "in N days" / "in N day" (arbitrary future offset) - All cleaned from display text Task count badge on pivot header: - Small number next to "tasks" title showing overdue + due-today - Uses accent color, only visible when count > 0 Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com> Co-Authored-By: Claude Opus 4.6 (1M context)
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.READ_CALENDAR" />
|
||||
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
@@ -29,6 +31,11 @@
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="text/plain" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<receiver
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.avinal.memos
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
@@ -33,22 +34,32 @@ class MainActivity : ComponentActivity() {
|
||||
requestBatteryOptimizationExemption()
|
||||
scheduleTaskChecker(applicationContext)
|
||||
|
||||
val sharedText = if (intent?.action == Intent.ACTION_SEND && intent.type == "text/plain") {
|
||||
intent.getStringExtra(Intent.EXTRA_TEXT)
|
||||
} else null
|
||||
|
||||
enableEdgeToEdge()
|
||||
setContent {
|
||||
CompositionLocalProvider(LocalAppDependencies provides deps) {
|
||||
App()
|
||||
App(sharedText = sharedText)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun requestNotificationPermission() {
|
||||
val perms = mutableListOf<String>()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)
|
||||
!= PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 1001)
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
|
||||
perms.add(Manifest.permission.POST_NOTIFICATIONS)
|
||||
}
|
||||
}
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
|
||||
perms.add(Manifest.permission.READ_CALENDAR)
|
||||
perms.add(Manifest.permission.WRITE_CALENDAR)
|
||||
}
|
||||
if (perms.isNotEmpty()) {
|
||||
ActivityCompat.requestPermissions(this, perms.toTypedArray(), 1001)
|
||||
}
|
||||
}
|
||||
|
||||
private fun requestBatteryOptimizationExemption() {
|
||||
|
||||
Reference in New Issue
Block a user