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
|
||||
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 {
|
||||
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.
|
||||
*/
|
||||
@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
|
||||
FROM bookmarks b
|
||||
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""")
|
||||
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
|
||||
FROM bookmarks b
|
||||
JOIN events e ON b.event_id = e.id
|
||||
|
|
|
@ -115,6 +115,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
|
|||
event.endTime,
|
||||
event.roomName,
|
||||
event.slug,
|
||||
event.url,
|
||||
trackId,
|
||||
event.abstractText,
|
||||
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.
|
||||
*/
|
||||
@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
|
||||
FROM events e
|
||||
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.
|
||||
*/
|
||||
@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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
FROM events e
|
||||
|
@ -291,7 +292,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
|
|||
/**
|
||||
* 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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
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).
|
||||
*/
|
||||
@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
|
||||
FROM events e
|
||||
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.
|
||||
*/
|
||||
@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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
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.
|
||||
*/
|
||||
@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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
FROM events e
|
||||
|
@ -361,7 +362,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
|
|||
/**
|
||||
* 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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
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.
|
||||
*/
|
||||
@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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
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
|
||||
* 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,
|
||||
b.event_id IS NOT NULL AS is_bookmarked
|
||||
FROM events e
|
||||
|
|
|
@ -28,6 +28,7 @@ class EventEntity(
|
|||
@ColumnInfo(name = "room_name")
|
||||
val roomName: String?,
|
||||
val slug: String?,
|
||||
val url: String?,
|
||||
@ColumnInfo(name = "track_id")
|
||||
val trackId: Long,
|
||||
@ColumnInfo(name = "abstract")
|
||||
|
|
|
@ -25,7 +25,7 @@ import javax.inject.Singleton
|
|||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object DatabaseModule {
|
||||
private const val DB_FILE = "fosdem.sqlite"
|
||||
private const val DB_FILE = "matomocamp.sqlite"
|
||||
private const val DB_PREFS_FILE = "database"
|
||||
|
||||
@Provides
|
||||
|
@ -40,7 +40,7 @@ object DatabaseModule {
|
|||
val MIGRATION_1_2 = object : Migration(1, 2) {
|
||||
override fun migrate(database: SupportSQLiteDatabase) = with(database) {
|
||||
// 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("DROP TABLE ${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")
|
||||
val roomName: String?,
|
||||
val slug: String?,
|
||||
val url: String?,
|
||||
val title: String?,
|
||||
@ColumnInfo(name = "subtitle")
|
||||
val subTitle: String?,
|
||||
|
@ -50,11 +51,6 @@ data class Event(
|
|||
0
|
||||
} 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 ?: ""
|
||||
}
|
|
@ -68,6 +68,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
|
|||
var startTime: Date? = null
|
||||
var duration: String? = null
|
||||
var slug: String? = null
|
||||
var url: String? = null
|
||||
var title: String? = null
|
||||
var subTitle: String? = null
|
||||
var trackName = ""
|
||||
|
@ -93,6 +94,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
|
|||
}
|
||||
"duration" -> duration = parser.nextText()
|
||||
"slug" -> slug = parser.nextText()
|
||||
"url" -> url = parser.nextText()
|
||||
"title" -> title = parser.nextText()
|
||||
"subtitle" -> subTitle = parser.nextText()
|
||||
"track" -> trackName = parser.nextText()
|
||||
|
@ -142,6 +144,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
|
|||
startTime = startTime,
|
||||
endTime = endTime,
|
||||
slug = slug,
|
||||
url = url,
|
||||
title = title,
|
||||
subTitle = subTitle,
|
||||
track = Track(name = trackName, type = trackType),
|
||||
|
|
Loading…
Reference in a new issue