1
0
Fork 0
mirror of https://github.com/MatomoCamp/matomocamp-companion-android.git synced 2024-09-19 16:13:46 +02:00

store URL from API response

This commit is contained in:
Lukas Winkler 2021-09-22 14:23:10 +02:00
parent 27b2084656
commit 5014c121d7
Signed by: lukas
GPG key ID: 54DE4D798D244853
7 changed files with 19 additions and 21 deletions

View file

@ -17,9 +17,6 @@ object MatomoCampUrls {
val volunteer val volunteer
get() = "https://fosdem.org/volunteer/" get() = "https://fosdem.org/volunteer/"
fun getEvent(slug: String, year: Int): String {
return "https://fosdem.org/$year/schedule/event/$slug/"
}
fun getPerson(slug: String, year: Int): String { fun getPerson(slug: String, year: Int): String {
return "https://fosdem.org/$year/schedule/speaker/$slug/" return "https://fosdem.org/$year/schedule/speaker/$slug/"

View file

@ -20,7 +20,7 @@ abstract class BookmarksDao(private val appDatabase: AppDatabase) {
* *
* @param minStartTime When greater than 0, only return the events starting after this time. * @param minStartTime When greater than 0, only return the events starting after this time.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type
FROM bookmarks b FROM bookmarks b
JOIN events e ON b.event_id = e.id JOIN events e ON b.event_id = e.id
@ -34,7 +34,7 @@ abstract class BookmarksDao(private val appDatabase: AppDatabase) {
ORDER BY e.start_time ASC""") ORDER BY e.start_time ASC""")
abstract fun getBookmarks(minStartTime: Long): LiveData<List<Event>> abstract fun getBookmarks(minStartTime: Long): LiveData<List<Event>>
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type
FROM bookmarks b FROM bookmarks b
JOIN events e ON b.event_id = e.id JOIN events e ON b.event_id = e.id

View file

@ -115,6 +115,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
event.endTime, event.endTime,
event.roomName, event.roomName,
event.slug, event.slug,
event.url,
trackId, trackId,
event.abstractText, event.abstractText,
event.description event.description
@ -258,7 +259,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns the event with the specified id, or null if not found. * Returns the event with the specified id, or null if not found.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type
FROM events e FROM events e
JOIN events_titles et ON e.id = et.`rowid` JOIN events_titles et ON e.id = et.`rowid`
@ -273,7 +274,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns all found events whose id is part of the given list. * Returns all found events whose id is part of the given list.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e FROM events e
@ -291,7 +292,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns the events for a specified track. * Returns the events for a specified track.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e FROM events e
@ -309,7 +310,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns a snapshot of the events for a specified track (without the bookmark status). * Returns a snapshot of the events for a specified track (without the bookmark status).
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type
FROM events e FROM events e
JOIN events_titles et ON e.id = et.`rowid` JOIN events_titles et ON e.id = et.`rowid`
@ -325,7 +326,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns events starting in the specified interval, ordered by ascending start time. * Returns events starting in the specified interval, ordered by ascending start time.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e FROM events e
@ -343,7 +344,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns events in progress at the specified time, ordered by descending start time. * Returns events in progress at the specified time, ordered by descending start time.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e FROM events e
@ -361,7 +362,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns the events presented by the specified person. * Returns the events presented by the specified person.
*/ */
@Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e JOIN events_titles et ON e.id = et.`rowid` FROM events e JOIN events_titles et ON e.id = et.`rowid`
@ -379,7 +380,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/** /**
* Returns the events presented by the specified person. * Returns the events presented by the specified person.
*/ */
@Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e JOIN events_titles et ON e.id = et.`rowid` FROM events e JOIN events_titles et ON e.id = et.`rowid`
@ -397,7 +398,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
* We need to use an union of 3 sub-queries because a "match" condition can not be * We need to use an union of 3 sub-queries because a "match" condition can not be
* accompanied by other conditions in a "where" statement. * accompanied by other conditions in a "where" statement.
*/ */
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description, @Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type, GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked b.event_id IS NOT NULL AS is_bookmarked
FROM events e FROM events e

View file

@ -28,6 +28,7 @@ class EventEntity(
@ColumnInfo(name = "room_name") @ColumnInfo(name = "room_name")
val roomName: String?, val roomName: String?,
val slug: String?, val slug: String?,
val url: String?,
@ColumnInfo(name = "track_id") @ColumnInfo(name = "track_id")
val trackId: Long, val trackId: Long,
@ColumnInfo(name = "abstract") @ColumnInfo(name = "abstract")

View file

@ -25,7 +25,7 @@ import javax.inject.Singleton
@Module @Module
@InstallIn(SingletonComponent::class) @InstallIn(SingletonComponent::class)
object DatabaseModule { object DatabaseModule {
private const val DB_FILE = "fosdem.sqlite" private const val DB_FILE = "matomocamp.sqlite"
private const val DB_PREFS_FILE = "database" private const val DB_PREFS_FILE = "database"
@Provides @Provides
@ -40,7 +40,7 @@ object DatabaseModule {
val MIGRATION_1_2 = object : Migration(1, 2) { val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) = with(database) { override fun migrate(database: SupportSQLiteDatabase) = with(database) {
// Events: make primary key and track_id not null // Events: make primary key and track_id not null
execSQL("CREATE TABLE tmp_${EventEntity.TABLE_NAME} (id INTEGER PRIMARY KEY NOT NULL, day_index INTEGER NOT NULL, start_time INTEGER, end_time INTEGER, room_name TEXT, slug TEXT, track_id INTEGER NOT NULL, abstract TEXT, description TEXT)") execSQL("CREATE TABLE tmp_${EventEntity.TABLE_NAME} (id INTEGER PRIMARY KEY NOT NULL, day_index INTEGER NOT NULL, start_time INTEGER, end_time INTEGER, room_name TEXT, slug TEXT, url TEXT, track_id INTEGER NOT NULL, abstract TEXT, description TEXT)")
execSQL("INSERT INTO tmp_${EventEntity.TABLE_NAME} SELECT * FROM ${EventEntity.TABLE_NAME}") execSQL("INSERT INTO tmp_${EventEntity.TABLE_NAME} SELECT * FROM ${EventEntity.TABLE_NAME}")
execSQL("DROP TABLE ${EventEntity.TABLE_NAME}") execSQL("DROP TABLE ${EventEntity.TABLE_NAME}")
execSQL("ALTER TABLE tmp_${EventEntity.TABLE_NAME} RENAME TO ${EventEntity.TABLE_NAME}") execSQL("ALTER TABLE tmp_${EventEntity.TABLE_NAME} RENAME TO ${EventEntity.TABLE_NAME}")

View file

@ -26,6 +26,7 @@ data class Event(
@ColumnInfo(name = "room_name") @ColumnInfo(name = "room_name")
val roomName: String?, val roomName: String?,
val slug: String?, val slug: String?,
val url: String?,
val title: String?, val title: String?,
@ColumnInfo(name = "subtitle") @ColumnInfo(name = "subtitle")
val subTitle: String?, val subTitle: String?,
@ -50,11 +51,6 @@ data class Event(
0 0
} else ((endTime.time - startTime.time) / android.text.format.DateUtils.MINUTE_IN_MILLIS).toInt() } else ((endTime.time - startTime.time) / android.text.format.DateUtils.MINUTE_IN_MILLIS).toInt()
val url: String?
get() {
val s = slug ?: return null
return MatomoCampUrls.getEvent(s, DateUtils.getYear(day.date.time))
}
override fun toString(): String = title ?: "" override fun toString(): String = title ?: ""
} }

View file

@ -68,6 +68,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
var startTime: Date? = null var startTime: Date? = null
var duration: String? = null var duration: String? = null
var slug: String? = null var slug: String? = null
var url: String? = null
var title: String? = null var title: String? = null
var subTitle: String? = null var subTitle: String? = null
var trackName = "" var trackName = ""
@ -93,6 +94,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
} }
"duration" -> duration = parser.nextText() "duration" -> duration = parser.nextText()
"slug" -> slug = parser.nextText() "slug" -> slug = parser.nextText()
"url" -> url = parser.nextText()
"title" -> title = parser.nextText() "title" -> title = parser.nextText()
"subtitle" -> subTitle = parser.nextText() "subtitle" -> subTitle = parser.nextText()
"track" -> trackName = parser.nextText() "track" -> trackName = parser.nextText()
@ -142,6 +144,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
startTime = startTime, startTime = startTime,
endTime = endTime, endTime = endTime,
slug = slug, slug = slug,
url = url,
title = title, title = title,
subTitle = subTitle, subTitle = subTitle,
track = Track(name = trackName, type = trackType), track = Track(name = trackName, type = trackType),