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:
parent
27b2084656
commit
5014c121d7
7 changed files with 19 additions and 21 deletions
|
@ -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/"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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}")
|
||||||
|
|
|
@ -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 ?: ""
|
||||||
}
|
}
|
|
@ -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),
|
||||||
|
|
Loading…
Reference in a new issue