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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Confetti 🎊

![kotlin-version](https://img.shields.io/badge/kotlin-2.2.20-blue?logo=kotlin)
![kotlin-version](https://img.shields.io/badge/kotlin-2.2.21-blue?logo=kotlin)

[<img src="https://upload.wikimedia.org/wikipedia/commons/7/78/Google_Play_Store_badge_EN.svg"
alt="Get it on Google Play Store"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.graphql

import dev.johnoreilly.confetti.backend.datastore.DComparatorGe
import kotlin.time.ExperimentalTime
import dev.johnoreilly.confetti.backend.datastore.DComparatorLe
import dev.johnoreilly.confetti.backend.datastore.DConfig
import dev.johnoreilly.confetti.backend.datastore.DFilter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.graphql

import kotlinx.datetime.Clock
import kotlin.time.Clock
import kotlin.time.ExperimentalTime
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toInstant
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.graphql

import com.apollographql.apollo.api.ExecutionContext
import kotlin.time.ExperimentalTime
import com.apollographql.apollo.ast.GQLStringValue
import com.apollographql.apollo.ast.GQLValue
import com.apollographql.apollo.execution.Coercing
Expand All @@ -11,7 +14,7 @@ import dev.johnoreilly.confetti.backend.*
import dev.johnoreilly.confetti.backend.datastore.DDirection
import dev.johnoreilly.confetti.backend.datastore.DOrderBy
import dev.johnoreilly.confetti.backend.datastore.DataStore
import kotlinx.datetime.Instant as KotlinxInstant
import kotlin.time.Instant as KotlinxInstant
import kotlinx.datetime.LocalDate as KotlinxLocalDate
import kotlinx.datetime.LocalDateTime as KotlinxLocalDateTime

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@file:OptIn(ExperimentalCoroutinesApi::class)
@file:OptIn(ExperimentalCoroutinesApi::class, ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import

Expand Down Expand Up @@ -40,6 +40,7 @@ import okhttp3.Request
import okhttp3.coroutines.executeAsync
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
import kotlin.time.ExperimentalTime

private val timeZone = "Europe/Paris"

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import


import dev.johnoreilly.confetti.backend.datastore.*
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toInstant
import kotlinx.datetime.toLocalDateTime
import okio.buffer
import okio.source
import xoxo.firstNonBlankTextContent
import xoxo.toXmlDocument
import xoxo.walkElements
import kotlin.time.ExperimentalTime
import kotlin.time.Instant


private class SessionizeItem(
Expand Down Expand Up @@ -82,8 +85,8 @@ object DroidConSF {
title = item.title,
description = null,
language = item.language,
start = item.start.toInstant().toLocalDateTime(TimeZone.of(TIMEZONE)),
end = item.end.toInstant().toLocalDateTime(TimeZone.of(TIMEZONE)),
start = Instant.parse(item.start).toLocalDateTime(TimeZone.of(TIMEZONE)),
end = Instant.parse(item.end).toLocalDateTime(TimeZone.of(TIMEZONE)),
tags = emptyList(),
rooms = listOf(item.room),
speakers = item.speakers.map { it.id },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import

import dev.johnoreilly.confetti.backend.datastore.ConferenceId
Expand All @@ -19,6 +21,7 @@ import okhttp3.Request
import xoxo.XmlElement
import xoxo.toXmlDocument
import kotlin.time.Duration.Companion.minutes
import kotlin.time.ExperimentalTime

object Fosdem {
private val timeZone = "Europe/Brussels"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@file:OptIn(ExperimentalCoroutinesApi::class)
@file:OptIn(ExperimentalCoroutinesApi::class, ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import

Expand All @@ -12,7 +12,6 @@ import dev.johnoreilly.confetti.backend.datastore.DataStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.withContext
import kotlinx.datetime.Instant
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
import kotlinx.serialization.json.Json
Expand All @@ -25,6 +24,8 @@ import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.coroutines.executeAsync
import kotlin.time.ExperimentalTime
import kotlin.time.Instant

object GraphQLSummit {
private val okHttpClient = OkHttpClient.Builder()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import

import com.nfeld.jsonpathkt.JsonPath
Expand All @@ -9,7 +11,6 @@ import dev.johnoreilly.confetti.backend.datastore.DSession
import dev.johnoreilly.confetti.backend.datastore.DSpeaker
import dev.johnoreilly.confetti.backend.datastore.DVenue
import dev.johnoreilly.confetti.backend.datastore.DataStore
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
Expand All @@ -21,6 +22,8 @@ import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import org.jsoup.Jsoup
import java.io.File
import kotlin.time.ExperimentalTime
import kotlin.time.Instant

object GraphQLSummit2023 {
fun import(): Int {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import

import GridTable
Expand All @@ -11,7 +13,6 @@ import dev.johnoreilly.confetti.backend.datastore.DSession
import dev.johnoreilly.confetti.backend.datastore.DSpeaker
import dev.johnoreilly.confetti.backend.datastore.DVenue
import dev.johnoreilly.confetti.backend.datastore.DataStore
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.TimeZone
Expand All @@ -20,6 +21,8 @@ import net.mbonnin.bare.graphql.asList
import net.mbonnin.bare.graphql.asMap
import net.mbonnin.bare.graphql.asString
import net.mbonnin.bare.graphql.cast
import kotlin.time.ExperimentalTime
import kotlin.time.Instant

object Sessionize {
private val devFestStockholm2023 = "https://sessionize.com/api/v2/nt4ryvlm/view/all"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.backend.import

import dev.johnoreilly.confetti.backend.datastore.ConferenceId
Expand All @@ -8,12 +10,13 @@ import dev.johnoreilly.confetti.backend.datastore.DSpeaker
import dev.johnoreilly.confetti.backend.datastore.DVenue
import dev.johnoreilly.confetti.backend.datastore.DataStore
import kotlinx.coroutines.runBlocking
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlin.time.ExperimentalTime
import kotlin.time.Instant

object TechConnection {
private val venue = DVenue(
Expand Down
5 changes: 4 additions & 1 deletion build-logic/src/main/kotlin/BumpCloudRunRevision.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
@file:OptIn(ExperimentalTime::class)

import com.google.api.gax.core.FixedCredentialsProvider
import com.google.auth.oauth2.GoogleCredentials
import com.google.cloud.run.v2.Service
import com.google.cloud.run.v2.ServiceName
import com.google.cloud.run.v2.ServicesClient
import com.google.cloud.run.v2.ServicesSettings
import gratatouille.GTaskAction
import kotlinx.datetime.Clock
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toLocalDateTime
import java.io.ByteArrayInputStream
import java.util.*
import kotlin.time.Clock
import kotlin.time.ExperimentalTime

@GTaskAction
fun bumpCloudRunRevision(serviceName: String) {
Expand Down
2 changes: 1 addition & 1 deletion build-logic/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@


object AndroidSdk {
const val min = 24
const val min = 25
const val compile = 36
const val target = compile
}
Expand Down
44 changes: 22 additions & 22 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
[versions]
kotlin = "2.2.20"
ksp = "2.2.20-2.0.2"
kotlin = "2.2.21"
ksp = "2.3.2"
kotlinx-coroutines = "1.10.2"
kotlinx-datetime = "0.6.0"
kotlinx-datetime = "0.7.1"
kotlinx-serialization = "1.9.0"
apollo-kotlin-execution = "0.1.1"
compatPatrouille = "0.0.2"
compatPatrouille = "0.1.0"

agp = "8.11.2"
activity-compose = "1.11.0"
androidx-lifecycle = "2.9.4"
androidx-datastore = "1.1.7"
agp = "8.13.1"
activity-compose = "1.12.0"
androidx-lifecycle = "2.10.0"
androidx-datastore = "1.2.0"
apollo = "4.3.3"
apollo-cache = "1.0.0-beta.0"
compose = "1.9.2"
compose-hot-reload = "1.0.0-beta09"
composeLifecyleRuntime="2.9.4"
compose-multiplatform = "1.9.0"
compose = "1.9.5"
compose-hot-reload = "1.0.0"
composeLifecyleRuntime="2.9.6"
compose-multiplatform = "1.9.3"
compose-material3 = "1.4.0"
composeWindowSize = "0.5.0"
credentials = "1.5.0"
Expand All @@ -32,27 +32,27 @@ kmmbridge = "1.2.1"
kotlin-csv = "1.10.0"
koin = "4.1.1"
kotlinx-coroutines-play-services = "1.10.2"
lifecycle = "2.9.4"
lifecycle-livedata-ktx = "2.9.4"
materialkolor = "3.0.1"
lifecycle = "2.10.0"
lifecycle-livedata-ktx = "2.10.0"
materialkolor = "4.0.5"
multiplatform-settings = "1.3.0"
nav-compose = "2.9.5"
okio = "3.16.0"
nav-compose = "2.9.6"
okio = "3.16.4"
permissions = "0.20.1"
protolayout = "1.3.0"
robolectric = "4.16"
room = "2.8.1"
room = "2.8.4"
tiles-tooling-preview = "1.5.0"
wear = "1.3.0"
wear-watchface = "1.3.0-alpha07"
wear-compose = "1.5.1"
wear-compose = "1.5.5"
wearPhoneInteractions = "1.1.0"
work-runtime-ktx = "2.10.2"
work-runtime-ktx = "2.11.0"
spring = "3.5.3"
generativeai = "0.9.0-1.1.0"
buildkonfig = "0.17.1"
roborazzi = "1.50.0"
screenshot = "0.0.1-alpha11"
roborazzi = "1.51.0"
screenshot = "0.0.1-alpha12"


[libraries]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.utils

import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toKotlinInstant
import kotlinx.datetime.toKotlinLocalDateTime
import kotlinx.datetime.toLocalDateTime
import java.time.Instant
import kotlin.time.ExperimentalTime
import kotlin.time.toKotlinInstant

class AndroidDateService: DateService {
override fun now(): LocalDateTime = java.time.LocalDateTime.now().toKotlinLocalDateTime()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti

import dev.johnoreilly.confetti.fragment.SessionDetails
import dev.johnoreilly.confetti.fragment.SpeakerDetails
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toInstant
import kotlin.time.ExperimentalTime

fun SessionDetails.isBreak() = this.type == "break"
fun SessionDetails.isService() = this.type == "service"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.utils

import kotlinx.coroutines.currentCoroutineContext
Expand All @@ -10,6 +12,7 @@ import kotlinx.datetime.TimeZone
import kotlinx.datetime.toInstant
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
import kotlin.time.ExperimentalTime

interface DateService {
// TODO create this in the correct TimeZone to avoid later calculations
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.work

import dev.johnoreilly.confetti.fragment.SessionDetails
Expand All @@ -8,6 +10,7 @@ import kotlinx.datetime.toInstant
import kotlinx.datetime.until
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
import kotlin.time.ExperimentalTime

interface NotificationSender {
sealed interface Selector {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
@file:OptIn(ExperimentalTime::class)

package dev.johnoreilly.confetti.utils

import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.TimeZone
import kotlinx.datetime.toKotlinInstant
import kotlinx.datetime.toLocalDateTime
import platform.Foundation.NSDate
import platform.Foundation.NSDateFormatter
import platform.Foundation.now
import kotlin.time.ExperimentalTime

class IosDateService: DateService {
private val nsDateFormatter = NSDateFormatter()
override fun now(): LocalDateTime {
return NSDate.now().toKotlinInstant().toLocalDateTime(TimeZone.currentSystemDefault())
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@file:OptIn(ExperimentalHorologistApi::class)
@file:OptIn(ExperimentalHorologistApi::class, ExperimentalTime::class)

package dev.johnoreilly.confetti.wear.complication

Expand All @@ -20,10 +20,11 @@ import dev.johnoreilly.confetti.toTimeZone
import dev.johnoreilly.confetti.wear.settings.PhoneSettingsSync
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.runBlocking
import kotlinx.datetime.toKotlinInstant
import kotlinx.datetime.toLocalDateTime
import org.koin.android.ext.android.inject
import java.time.Instant
import kotlin.time.ExperimentalTime
import kotlin.time.toKotlinInstant

class NextSessionComplicationService :
DataComplicationService<NextSessionComplicationData, NextSessionTemplate>() {
Expand Down
Loading
Loading