|
@@ -77,6 +77,8 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
private val _groupedPhotosLiveData = MutableLiveData<List<GroupedPhoto>>()
|
|
private val _groupedPhotosLiveData = MutableLiveData<List<GroupedPhoto>>()
|
|
val groupedPhotosLiveData: LiveData<List<GroupedPhoto>> = _groupedPhotosLiveData
|
|
val groupedPhotosLiveData: LiveData<List<GroupedPhoto>> = _groupedPhotosLiveData
|
|
val groupedPhotos: List<GroupedPhoto> get() = _groupedPhotosLiveData.value ?: emptyList()
|
|
val groupedPhotos: List<GroupedPhoto> get() = _groupedPhotosLiveData.value ?: emptyList()
|
|
|
|
+ private val _cloudStatusLiveData = MutableLiveData<Int>()
|
|
|
|
+ val cloudStatusLiveData: LiveData<Int> get() = _cloudStatusLiveData
|
|
private var lastLoadedIndex = 0
|
|
private var lastLoadedIndex = 0
|
|
private val pageSize = 28
|
|
private val pageSize = 28
|
|
// LiveData for download status
|
|
// LiveData for download status
|
|
@@ -118,7 +120,7 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- fun getCloudId(ticket: String) {
|
|
|
|
|
|
+ fun getCloudId(context: Context, ticket: String) {
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
mAccessToken = getTokenInfoFromDatabase(ticket)!!.accessToken
|
|
mAccessToken = getTokenInfoFromDatabase(ticket)!!.accessToken
|
|
HttpServiceExecutor.execute(
|
|
HttpServiceExecutor.execute(
|
|
@@ -132,7 +134,7 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
mCloudID = (this.mData as GetCloudIdRepo).data.cloudId
|
|
mCloudID = (this.mData as GetCloudIdRepo).data.cloudId
|
|
mPhotoID = (this.mData as GetCloudIdRepo).data.photoId
|
|
mPhotoID = (this.mData as GetCloudIdRepo).data.photoId
|
|
Logger.d(TAG, "successfully get cloud id:$mCloudID, photoID:$mPhotoID")
|
|
Logger.d(TAG, "successfully get cloud id:$mCloudID, photoID:$mPhotoID")
|
|
- queryContentInfo(0, ticket)
|
|
|
|
|
|
+ queryContentInfo(context, 0, ticket)
|
|
} else if (this.code == "1001") {
|
|
} else if (this.code == "1001") {
|
|
GlobalScope.launch {
|
|
GlobalScope.launch {
|
|
withContext(Dispatchers.Main) {
|
|
withContext(Dispatchers.Main) {
|
|
@@ -162,6 +164,8 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
).flowable
|
|
).flowable
|
|
).apply {
|
|
).apply {
|
|
if (this.code == "200") {
|
|
if (this.code == "200") {
|
|
|
|
+ val responseBody = (this.mData as ConfirmInvitationRepo).data
|
|
|
|
+ Logger.d(TAG, "Success: $responseBody")
|
|
mCloudID = (this.mData as ConfirmInvitationRepo).data.cloudId
|
|
mCloudID = (this.mData as ConfirmInvitationRepo).data.cloudId
|
|
mPhotoID = (this.mData as ConfirmInvitationRepo).data.photoId
|
|
mPhotoID = (this.mData as ConfirmInvitationRepo).data.photoId
|
|
Logger.d(TAG, "ConfirmInvitationRepo cloud id:$mCloudID, photoID:$mPhotoID")
|
|
Logger.d(TAG, "ConfirmInvitationRepo cloud id:$mCloudID, photoID:$mPhotoID")
|
|
@@ -170,9 +174,21 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
ToastUtils.showLongToast(R.string.cloud_album_joined_successfully)
|
|
ToastUtils.showLongToast(R.string.cloud_album_joined_successfully)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- queryContentInfo(0, ticket)
|
|
|
|
|
|
+ queryContentInfo(context, 0, ticket)
|
|
|
|
+ } else if (this.code == "12002" || this.code == "20010" || this.code == "20011") {
|
|
|
|
+ Logger.d(TAG, "confirmInvitation Failed: code=${this.code}")
|
|
|
|
+ _cloudStatusLiveData.postValue(0)
|
|
|
|
+ deleteTokenFromDatabase(ticket)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ Logger.d(TAG, "getInvitationCode error, code: ${this.code}")
|
|
|
|
+ GlobalScope.launch {
|
|
|
|
+ withContext(Dispatchers.Main) {
|
|
|
|
+ ToastUtils.showLongToast(R.string.cloud_album_failed_to_join)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ _cloudStatusLiveData.postValue(1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -180,7 +196,7 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- fun queryContentInfo(startIndex: Int, ticket: String) {
|
|
|
|
|
|
+ fun queryContentInfo(context: Context, startIndex: Int, ticket: String) {
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
mAccessToken = getTokenInfoFromDatabase(ticket)!!.accessToken
|
|
mAccessToken = getTokenInfoFromDatabase(ticket)!!.accessToken
|
|
val request = QueryContentReq(
|
|
val request = QueryContentReq(
|
|
@@ -223,10 +239,8 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
}
|
|
}
|
|
} else if (responseBody.code == 12002 || responseBody.code == 20010 || responseBody.code == 20011) {
|
|
} else if (responseBody.code == 12002 || responseBody.code == 20010 || responseBody.code == 20011) {
|
|
Logger.d(TAG, "Failed: code=$responseBody!!.body.code")
|
|
Logger.d(TAG, "Failed: code=$responseBody!!.body.code")
|
|
|
|
+ _cloudStatusLiveData.postValue(0)
|
|
deleteTokenFromDatabase(ticket)
|
|
deleteTokenFromDatabase(ticket)
|
|
- val intent = Intent(application, MCloudAuthActivity::class.java)
|
|
|
|
- intent.putExtra("cloud_album_ticket", ticket)
|
|
|
|
- application.startActivity(intent)
|
|
|
|
} else {
|
|
} else {
|
|
GlobalScope.launch {
|
|
GlobalScope.launch {
|
|
withContext(Dispatchers.Main) {
|
|
withContext(Dispatchers.Main) {
|
|
@@ -335,13 +349,13 @@ class PhotoViewModel(private val application: Application) : AndroidViewModel(ap
|
|
_groupedPhotosLiveData.postValue(groupedPhotos)
|
|
_groupedPhotosLiveData.postValue(groupedPhotos)
|
|
}
|
|
}
|
|
|
|
|
|
- fun loadNextPage(ticket: String, onComplete: () -> Unit) {
|
|
|
|
|
|
+ fun loadNextPage(context: Context, ticket: String, onComplete: () -> Unit) {
|
|
executor.execute {
|
|
executor.execute {
|
|
Logger.d(TAG, "loadNextPage lastLoadedIndex:$lastLoadedIndex, photos.size:${photos.size}")
|
|
Logger.d(TAG, "loadNextPage lastLoadedIndex:$lastLoadedIndex, photos.size:${photos.size}")
|
|
if (lastLoadedIndex < photos.size) {
|
|
if (lastLoadedIndex < photos.size) {
|
|
lastLoadedIndex = min(lastLoadedIndex + pageSize, photos.size)
|
|
lastLoadedIndex = min(lastLoadedIndex + pageSize, photos.size)
|
|
Logger.d(TAG, "loadNextPage (in if) lastLoadedIndex:$lastLoadedIndex")
|
|
Logger.d(TAG, "loadNextPage (in if) lastLoadedIndex:$lastLoadedIndex")
|
|
- queryContentInfo(lastLoadedIndex, ticket)
|
|
|
|
|
|
+ queryContentInfo(context, lastLoadedIndex, ticket)
|
|
}
|
|
}
|
|
onComplete()
|
|
onComplete()
|
|
}
|
|
}
|