chore(ntfy): split NTFY server and topic; update NotificationSender and resources
This commit is contained in:
parent
961ebfd757
commit
b0531c0412
123
.idea/codeStyles/Project.xml
generated
Normal file
123
.idea/codeStyles/Project.xml
generated
Normal file
@ -0,0 +1,123 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<JetCodeStyleSettings>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
<codeStyleSettings language="XML">
|
||||
<option name="FORCE_REARRANGE_MODE" value="1" />
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
<arrangement>
|
||||
<rules>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:android</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:id</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>style</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
||||
</rule>
|
||||
</section>
|
||||
<section>
|
||||
<rule>
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
<order>BY_NAME</order>
|
||||
</rule>
|
||||
</section>
|
||||
</rules>
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
||||
32
.idea/copilot.data.migration.agent.xml
generated
32
.idea/copilot.data.migration.agent.xml
generated
@ -3,10 +3,30 @@
|
||||
<component name="AgentMigrationStateService">
|
||||
<option name="migrationStatus" value="IN_PROGRESS" />
|
||||
<option name="pendingSessionIds">
|
||||
<option value="05f02dcc-4a62-4a3b-a6bb-d4764cbd1bab" />
|
||||
<option value="1e2fee64-523c-4038-ad08-03d8f8196cb1" />
|
||||
<option value="46f36349-a2e4-46bf-b85e-8ee46252660a" />
|
||||
<option value="63e1cd83-39a1-4de9-83e4-a7d978cb9048" />
|
||||
<option value="82cd9415-28a8-49b5-841d-6178af5419de" />
|
||||
<option value="a1f1bc1b-b1d4-4655-9677-4653b213cc14" />
|
||||
<option value="ad5bcc95-675a-45d4-8896-b1645cb788b9" />
|
||||
<option value="bf5061b4-a1e9-4600-a273-ea8e51b2ce89" />
|
||||
<option value="d23e68d4-6558-4c12-a57e-d937ea639547" />
|
||||
<option value="e6a32dc0-5413-49cf-ad92-9fb87982ed75" />
|
||||
</option>
|
||||
<option name="pendingTurns">
|
||||
<map>
|
||||
<entry key="63e1cd83-39a1-4de9-83e4-a7d978cb9048">
|
||||
<value>
|
||||
<set>
|
||||
<option value="f099f72f-0866-4d16-85e4-8323be39e45f" />
|
||||
<option value="44c8c4f4-3bbe-4fb8-88e4-58bdb184dad0" />
|
||||
<option value="a20448f7-57cd-4a40-89b1-460451412588" />
|
||||
<option value="484561a1-1c08-44cd-bcd3-a53895fc3851" />
|
||||
<option value="17ec376a-38fd-48ac-a4e1-52e9f7df3100" />
|
||||
</set>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="bf5061b4-a1e9-4600-a273-ea8e51b2ce89">
|
||||
<value>
|
||||
<set>
|
||||
@ -57,18 +77,16 @@
|
||||
</map>
|
||||
</option>
|
||||
<pendingWorkingSetItems>
|
||||
<entry key="bf5061b4-a1e9-4600-a273-ea8e51b2ce89">
|
||||
<entry key="63e1cd83-39a1-4de9-83e4-a7d978cb9048">
|
||||
<set>
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/PanicButton.kt" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/MainScreen.kt" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/res/mipmap-anydpi/ic_launcher.xml" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml" />
|
||||
<option value="file://$PROJECT_DIR$/app/build.gradle.kts" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/MainActivity.kt" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/EvacuationMaps.kt" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/EvacuationMapsActivity.kt" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/EvacuationMapDetailActivity.kt" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/AndroidManifest.xml" />
|
||||
<option value="file://$PROJECT_DIR$/app/src/main/java/id/ac/ubharajaya/panicbutton/NotificationSender.kt" />
|
||||
</set>
|
||||
</entry>
|
||||
<entry key="bf5061b4-a1e9-4600-a273-ea8e51b2ce89" />
|
||||
</pendingWorkingSetItems>
|
||||
</component>
|
||||
</project>
|
||||
2
.idea/vcs.xml
generated
2
.idea/vcs.xml
generated
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@ -66,4 +66,7 @@ dependencies {
|
||||
|
||||
// Navigation for Compose
|
||||
implementation("androidx.navigation:navigation-compose:2.6.0")
|
||||
|
||||
// AndroidX SplashScreen (required for installSplashScreen API)
|
||||
implementation("androidx.core:core-splashscreen:1.0.1")
|
||||
}
|
||||
@ -6,19 +6,18 @@
|
||||
android:allowBackup="true"
|
||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||
android:fullBackupContent="@xml/backup_rules"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:icon="@drawable/logo"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:roundIcon="@drawable/logo"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.PanicButton">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/Theme.PanicButton">
|
||||
android:theme="@style/Theme.App.Starting">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
@ -13,7 +13,6 @@ class MainActivity : ComponentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
|
||||
|
||||
val openEvacMaps = {
|
||||
startActivity(Intent(this, EvacuationMapsActivity::class.java))
|
||||
}
|
||||
@ -23,4 +22,4 @@ class MainActivity : ComponentActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -12,11 +12,10 @@ import java.io.IOException
|
||||
object NotificationSender {
|
||||
private val client = OkHttpClient.Builder()
|
||||
.build()
|
||||
|
||||
private const val url = "https://ntfy.ubharajaya.ac.id/panic-button"
|
||||
private const val server = "https://ntfy.ubharajaya.ac.id"
|
||||
private const val topic = "panic-button"
|
||||
private const val TAG = "NotificationSender"
|
||||
|
||||
// Header MUST be ASCII only
|
||||
private fun sanitizeHeaderValue(value: String): String {
|
||||
val sb = StringBuilder()
|
||||
for (ch in value) {
|
||||
@ -29,6 +28,7 @@ object NotificationSender {
|
||||
|
||||
suspend fun sendNotification(message: String): String = withContext(Dispatchers.IO) {
|
||||
try {
|
||||
val url = "$server/$topic"
|
||||
Log.d(TAG, "Preparing notification to $url")
|
||||
|
||||
// Title ONLY has emoji
|
||||
|
||||
21
app/src/main/res/drawable/logo.xml
Normal file
21
app/src/main/res/drawable/logo.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="800dp"
|
||||
android:height="800dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="M507.49,426.07L282.86,53.54c-5.68,-9.41 -15.87,-15.17 -26.86,-15.17c-10.99,0 -21.19,5.76 -26.86,15.17L4.51,426.07c-5.84,9.69 -6.01,21.77 -0.45,31.63c5.56,9.85 16,15.94 27.32,15.94h449.26c11.31,0 21.75,-6.09 27.32,-15.94C513.51,447.84 513.34,435.76 507.49,426.07z"
|
||||
android:fillColor="#FF9900"/>
|
||||
<path
|
||||
android:pathData="M256,38.37c-10.99,0 -21.19,5.76 -26.86,15.17L4.51,426.07c-5.84,9.69 -6.01,21.77 -0.45,31.63c5.56,9.85 16,15.94 27.32,15.94h224.63L256,38.37L256,38.37z"
|
||||
android:fillColor="#FFDC35"/>
|
||||
<path
|
||||
android:pathData="M445.33,432.79H67.11c-3.59,0 -6.91,-1.91 -8.72,-5.01c-1.81,-3.1 -1.83,-6.93 -0.05,-10.06L247.23,85.03c1.79,-3.15 5.14,-5.11 8.77,-5.11c0,0 0,0 0,0c3.63,0 6.97,1.95 8.77,5.1l189.32,332.69c1.78,3.12 1.76,6.95 -0.05,10.06S448.92,432.79 445.33,432.79zM84.44,412.62h343.54L256.01,110.42L84.44,412.62z"
|
||||
android:fillColor="#F20013"/>
|
||||
<path
|
||||
android:pathData="M256.33,412.62H84.44l171.58,-302.19l-0.01,-30.5h-0c-3.63,0 -6.98,1.95 -8.77,5.11L58.34,417.72c-1.77,3.12 -1.75,6.95 0.05,10.06c1.81,3.1 5.13,5.01 8.72,5.01h189.22v-20.17H256.33z"
|
||||
android:fillColor="#FF4B00"/>
|
||||
<path
|
||||
android:pathData="M279.36,376.88c0,12.34 -10.54,23.18 -22.88,23.18c-13.25,0 -23.18,-10.84 -23.18,-23.18c0,-12.64 9.94,-23.18 23.18,-23.18C268.83,353.7 279.36,364.24 279.36,376.88zM273.64,319.68c0,9.33 -10.24,13.25 -17.46,13.25c-9.63,0 -17.76,-3.91 -17.76,-13.25c0,-35.83 -4.21,-87.31 -4.21,-123.13c0,-11.74 9.63,-18.36 21.98,-18.36c11.74,0 21.68,6.62 21.68,18.36C277.86,232.37 273.64,283.86 273.64,319.68z"
|
||||
android:fillColor="#533F29"/>
|
||||
</vector>
|
||||
9
app/src/main/res/drawable/splash_icon_padded.xml
Normal file
9
app/src/main/res/drawable/splash_icon_padded.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:drawable="@drawable/ubhara"
|
||||
android:top="30dp"
|
||||
android:bottom="30dp"
|
||||
android:left="30dp"
|
||||
android:right="30dp"/>
|
||||
</layer-list>
|
||||
BIN
app/src/main/res/drawable/ubhara.png
Normal file
BIN
app/src/main/res/drawable/ubhara.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 398 KiB |
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<background android:drawable="@android:color/transparent" />
|
||||
<foreground android:drawable="@drawable/logo" />
|
||||
<monochrome android:drawable="@drawable/logo" />
|
||||
</adaptive-icon>
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<background android:drawable="@android:color/transparent" />
|
||||
<foreground android:drawable="@drawable/logo" />
|
||||
<monochrome android:drawable="@drawable/logo" />
|
||||
</adaptive-icon>
|
||||
10
app/src/main/res/values/styles.xml
Normal file
10
app/src/main/res/values/styles.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
|
||||
|
||||
<item name="postSplashScreenTheme">@style/Theme.PanicButton</item>
|
||||
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_icon_padded</item>
|
||||
|
||||
<item name="windowSplashScreenAnimationDuration">500</item>
|
||||
</style>
|
||||
</resources>
|
||||
Loading…
x
Reference in New Issue
Block a user