mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
make google sync service fetching a context extension function
This commit is contained in:
@@ -328,7 +328,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
showAccountChooser()
|
showAccountChooser()
|
||||||
} else {
|
} else {
|
||||||
credential.selectedAccountName = config.syncAccountName
|
credential.selectedAccountName = config.syncAccountName
|
||||||
FetchGoogleEventsTask(this, credential).execute()
|
FetchGoogleEventsTask(this).execute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,17 +4,14 @@ import android.app.Activity
|
|||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.AsyncTask
|
import android.os.AsyncTask
|
||||||
import android.util.SparseIntArray
|
import android.util.SparseIntArray
|
||||||
import com.google.api.client.extensions.android.http.AndroidHttp
|
|
||||||
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential
|
|
||||||
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
|
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
|
||||||
import com.google.api.client.json.gson.GsonFactory
|
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
import com.simplemobiletools.calendar.R
|
|
||||||
import com.simplemobiletools.calendar.activities.SettingsActivity
|
import com.simplemobiletools.calendar.activities.SettingsActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
|
import com.simplemobiletools.calendar.extensions.getGoogleSyncService
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.helpers.*
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.models.*
|
import com.simplemobiletools.calendar.models.*
|
||||||
@@ -22,7 +19,7 @@ import org.joda.time.DateTime
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
// more info about event fields at https://developers.google.com/google-apps/calendar/v3/reference/events/insert
|
// more info about event fields at https://developers.google.com/google-apps/calendar/v3/reference/events/insert
|
||||||
class FetchGoogleEventsTask(val activity: Activity, credential: GoogleAccountCredential) : AsyncTask<Void, Void, List<Event>>() {
|
class FetchGoogleEventsTask(val activity: Activity) : AsyncTask<Void, Void, List<Event>>() {
|
||||||
private val CONFIRMED = "confirmed"
|
private val CONFIRMED = "confirmed"
|
||||||
private val PRIMARY = "primary"
|
private val PRIMARY = "primary"
|
||||||
private val ITEMS = "items"
|
private val ITEMS = "items"
|
||||||
@@ -30,18 +27,11 @@ class FetchGoogleEventsTask(val activity: Activity, credential: GoogleAccountCre
|
|||||||
private val POPUP = "popup"
|
private val POPUP = "popup"
|
||||||
private val NEXT_PAGE_TOKEN = "nextPageToken"
|
private val NEXT_PAGE_TOKEN = "nextPageToken"
|
||||||
|
|
||||||
private var service: com.google.api.services.calendar.Calendar
|
|
||||||
private var lastError: Exception? = null
|
private var lastError: Exception? = null
|
||||||
private var dbHelper = activity.dbHelper
|
private var dbHelper = activity.dbHelper
|
||||||
private var eventTypes = ArrayList<EventType>()
|
private var eventTypes = ArrayList<EventType>()
|
||||||
private var eventColors = SparseIntArray()
|
private var eventColors = SparseIntArray()
|
||||||
|
private var service = activity.getGoogleSyncService()
|
||||||
init {
|
|
||||||
val transport = AndroidHttp.newCompatibleTransport()
|
|
||||||
service = com.google.api.services.calendar.Calendar.Builder(transport, GsonFactory(), credential)
|
|
||||||
.setApplicationName(activity.resources.getString(R.string.app_name))
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun doInBackground(vararg params: Void): List<Event>? {
|
override fun doInBackground(vararg params: Void): List<Event>? {
|
||||||
return try {
|
return try {
|
||||||
|
@@ -13,6 +13,11 @@ import android.graphics.Color
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.support.v7.app.NotificationCompat
|
import android.support.v7.app.NotificationCompat
|
||||||
|
import com.google.api.client.extensions.android.http.AndroidHttp
|
||||||
|
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential
|
||||||
|
import com.google.api.client.json.gson.GsonFactory
|
||||||
|
import com.google.api.client.util.ExponentialBackOff
|
||||||
|
import com.google.api.services.calendar.CalendarScopes
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.EventActivity
|
import com.simplemobiletools.calendar.activities.EventActivity
|
||||||
import com.simplemobiletools.calendar.helpers.*
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
@@ -225,6 +230,15 @@ fun Context.launchNewEventIntent(startNewTask: Boolean = false, today: Boolean =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.getGoogleSyncService(): com.google.api.services.calendar.Calendar {
|
||||||
|
val credential = GoogleAccountCredential.usingOAuth2(this, arrayListOf(CalendarScopes.CALENDAR)).setBackOff(ExponentialBackOff())
|
||||||
|
credential.selectedAccountName = config.syncAccountName
|
||||||
|
val transport = AndroidHttp.newCompatibleTransport()
|
||||||
|
return com.google.api.services.calendar.Calendar.Builder(transport, GsonFactory(), credential)
|
||||||
|
.setApplicationName(resources.getString(R.string.app_name))
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
fun Context.getNewEventTimestampFromCode(dayCode: String) = Formatter.getLocalDateTimeFromCode(dayCode).withTime(13, 0, 0, 0).seconds()
|
fun Context.getNewEventTimestampFromCode(dayCode: String) = Formatter.getLocalDateTimeFromCode(dayCode).withTime(13, 0, 0, 0).seconds()
|
||||||
|
|
||||||
fun Context.getCurrentOffset() = SimpleDateFormat("Z", Locale.getDefault()).format(Date())
|
fun Context.getCurrentOffset() = SimpleDateFormat("Z", Locale.getDefault()).format(Date())
|
||||||
|
@@ -3,5 +3,5 @@ package com.simplemobiletools.calendar.models
|
|||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
|
|
||||||
data class GoogleEvent(val summary: String, val description: String, val status: String, val start: GoogleEventDateTime, val end: GoogleEventDateTime,
|
data class GoogleEvent(val summary: String, val description: String?, val status: String, val start: GoogleEventDateTime, val end: GoogleEventDateTime,
|
||||||
val reminders: JsonObject, val recurrence: JsonArray?, val iCalUID: String, val colorId: Int, val updated: String)
|
val reminders: JsonObject, val recurrence: JsonArray?, val iCalUID: String, val colorId: Int, val updated: String)
|
||||||
|
Reference in New Issue
Block a user