Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/build-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ jobs:

- name: Build APK
run: |
chmod +x gradlew
./gradlew assembleNightly
mv app/build/outputs/apk/nightly/app-nightly-unsigned.apk app/NotiFilter_nightly.apk

Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ jobs:
cache: "gradle"

- name: Build APK
run: |
chmod +x gradlew
./gradlew assembleRelease
run: ./gradlew assembleRelease

- name: Sign APK
env:
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/run_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: run tests

on:
push:
branches:
- dev

jobs:
run-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: "temurin"
cache: "gradle"

- name: Run tests
run: ./gradlew testReleaseUnitTest
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ android {
applicationId = "co.adityarajput.notifilter"
minSdk = 29
targetSdk = 36
versionCode = 29
versionName = "4.9.1"
versionCode = 30
versionName = "4.10.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,14 @@ data class Schedule(
}
}

fun includesNow(): Boolean {
val calendar = Calendar.getInstance()
fun includesNow(calendar: Calendar = Calendar.getInstance()): Boolean {
val minuteOfDay =
calendar.get(Calendar.HOUR_OF_DAY) * 60 + calendar.get(Calendar.MINUTE)

return days.contains(calendar.get(Calendar.DAY_OF_WEEK)) &&
calendar.get(Calendar.HOUR_OF_DAY) * 60 + calendar.get(Calendar.MINUTE) in start..end
((start < end && minuteOfDay in start..end)
|| (end < start && minuteOfDay !in (end + 1)..<start))
}

fun isRangeValid() = start in 0..1439 && end in 0..1439 && start <= end
fun isRangeValid() = start in 0..1439 && end in 0..1439 && start != end
}
2 changes: 1 addition & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<resources>
<string name="app_name" translatable="false">NotiFilter</string>
<string name="app_name_launcher" translatable="false">NotiFilter</string>
<string name="app_version" translatable="false">4.9.1</string>
<string name="app_version" translatable="false">4.10.0</string>

<!-- region FiltersScreen -->
<string name="no_filters">No filters added.\nTap + to get started.</string>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package co.adityarajput.notifilter.data.models

import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import java.util.Calendar

@Suppress("TestFunctionName")
class ScheduleTest {
val mondayTenAM: Calendar = Calendar.getInstance().apply {
set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
set(Calendar.HOUR_OF_DAY, 10)
set(Calendar.MINUTE, 0)
}

val tuesdayNinePM: Calendar = Calendar.getInstance().apply {
set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY)
set(Calendar.HOUR_OF_DAY, 21)
set(Calendar.MINUTE, 0)
}

val saturdayElevenPM: Calendar = Calendar.getInstance().apply {
set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY)
set(Calendar.HOUR_OF_DAY, 23)
set(Calendar.MINUTE, 0)
}

val atWork = Schedule(
9 * 60,
(12 + 5) * 60,
setOf(
Calendar.MONDAY,
Calendar.TUESDAY,
Calendar.WEDNESDAY,
Calendar.THURSDAY,
Calendar.FRIDAY,
),
)

val atHome = Schedule(
(12 + 5) * 60,
9 * 60,
setOf(
Calendar.MONDAY,
Calendar.TUESDAY,
Calendar.WEDNESDAY,
Calendar.THURSDAY,
Calendar.FRIDAY,
),
)

val weekend = Schedule(days = setOf(Calendar.SATURDAY, Calendar.SUNDAY))

@Test
fun Schedule_includesNow_correct() {
assertTrue(atWork.includesNow(mondayTenAM))
assertTrue(atHome.includesNow(tuesdayNinePM))
assertTrue(weekend.includesNow(saturdayElevenPM))
}

@Test
fun Schedule_includesNow_incorrectDay() {
assertFalse(atWork.includesNow(saturdayElevenPM))
assertFalse(atHome.includesNow(saturdayElevenPM))
assertFalse(weekend.includesNow(mondayTenAM))
assertFalse(weekend.includesNow(tuesdayNinePM))
}

@Test
fun Schedule_includesNow_incorrectTime() {
assertFalse(atWork.includesNow(tuesdayNinePM))
assertFalse(atHome.includesNow(mondayTenAM))
}
}
Empty file modified gradlew
100644 → 100755
Empty file.
5 changes: 5 additions & 0 deletions metadata/en-US/changelogs/30.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
• feat: Support overnight schedules

Intervals like 9pm to 7am (of the next day) are now supported.

Note that the schedule must include the correct days of the week. For example, if you want to schedule something from 9pm on Monday to 7am on Tuesday, both Monday and Tuesday must be active.
Loading