Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Game Client Android
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
22
Issues
22
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Akamu
Game Client Android
Commits
398eec8a
Commit
398eec8a
authored
Oct 30, 2020
by
Niklas Fix
🎓
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
boost fetching avatars
parent
51304081
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
33 deletions
+44
-33
app/src/main/java/de/akamu/tudarmstadt/data/user/UserDataSource.kt
...ain/java/de/akamu/tudarmstadt/data/user/UserDataSource.kt
+19
-6
app/src/main/java/de/akamu/tudarmstadt/data/user/UserDataSourceImpl.kt
...java/de/akamu/tudarmstadt/data/user/UserDataSourceImpl.kt
+5
-12
app/src/main/java/de/akamu/tudarmstadt/features/profile/AvatarGridAdapter.kt
...e/akamu/tudarmstadt/features/profile/AvatarGridAdapter.kt
+2
-1
app/src/main/java/de/akamu/tudarmstadt/features/profile/ProfilePresenter.kt
...de/akamu/tudarmstadt/features/profile/ProfilePresenter.kt
+11
-8
app/src/main/java/de/akamu/tudarmstadt/interactors/UserInteractor.kt
...n/java/de/akamu/tudarmstadt/interactors/UserInteractor.kt
+7
-6
No files found.
app/src/main/java/de/akamu/tudarmstadt/data/user/UserDataSource.kt
View file @
398eec8a
...
...
@@ -3,6 +3,7 @@ package de.akamu.tudarmstadt.data.user
import
de.akamu.tudarmstadt.model.Avatar
import
de.akamu.tudarmstadt.model.User
import
java.util.*
import
kotlin.collections.ArrayList
/**
* Defines general methods to change the user in the server
...
...
@@ -46,14 +47,26 @@ interface UserDataSource {
}
/**
* Callback for loading
the user's avatar
* Callback for loading
all the avatars
*/
interface
LoadAvatarListCallback
{
interface
LoadA
llA
vatarListCallback
{
/** Called when the user avatar was successfully loaded */
/** Called when all the avatars were successfully loaded */
fun
onLoadAvatarListSuccess
(
avatarList
:
ArrayList
<
Avatar
>)
/** Called when loading all the avatars failed */
fun
onLoadAvatarListFail
(
reason
:
String
)
}
/**
* Callback for loading all the user's avatar
*/
interface
LoadUnlockedAvatarListCallback
{
/** Called when the unlocked avatars was successfully loaded */
fun
onLoadAvatarListSuccess
(
avatarSortedMap
:
SortedMap
<
Avatar
,
ByteArray
>)
/** Called when loading the u
ser avatar
failed */
/** Called when loading the u
nlocked avatars
failed */
fun
onLoadAvatarListFail
(
reason
:
String
)
}
...
...
@@ -65,7 +78,7 @@ interface UserDataSource {
fun
loadUserAvatarFromServer
(
avatarUrl
:
String
,
callback
:
LoadAvatarCallback
)
fun
loadAllAvatarsFromServer
(
callback
:
LoadAvatarListCallback
)
fun
loadAllAvatarsFromServer
(
callback
:
LoadA
llA
vatarListCallback
)
fun
loadUnlockedAvatarsFromServer
(
callback
:
LoadAvatarListCallback
)
fun
loadUnlockedAvatarsFromServer
(
callback
:
Load
Unlocked
AvatarListCallback
)
}
\ No newline at end of file
app/src/main/java/de/akamu/tudarmstadt/data/user/UserDataSourceImpl.kt
View file @
398eec8a
...
...
@@ -157,25 +157,18 @@ class UserDataSourceImpl : UserDataSource {
}
}
override
fun
loadAllAvatarsFromServer
(
callback
:
UserDataSource
.
LoadAvatarListCallback
)
{
override
fun
loadAllAvatarsFromServer
(
callback
:
UserDataSource
.
LoadA
llA
vatarListCallback
)
{
val
getAllAvatarsTask
=
GetAllAvatarsTask
(
callback
)
getAllAvatarsTask
.
executeOnExecutor
(
AsyncTask
.
THREAD_POOL_EXECUTOR
)
}
class
GetAllAvatarsTask
(
var
callback
:
UserDataSource
.
LoadAvatarListCallback
)
:
AsyncTask
<
Void
,
Void
,
Boolean
>()
{
class
GetAllAvatarsTask
(
var
callback
:
UserDataSource
.
LoadA
llA
vatarListCallback
)
:
AsyncTask
<
Void
,
Void
,
Boolean
>()
{
lateinit
var
avatarList
:
ArrayList
<
Avatar
>
lateinit
var
avatarSortedMap
:
SortedMap
<
Avatar
,
ByteArray
>
private
var
avatarHashMap
:
HashMap
<
Avatar
,
ByteArray
>
=
HashMap
()
private
lateinit
var
errorMessage
:
String
override
fun
doInBackground
(
vararg
p0
:
Void
?):
Boolean
{
return
try
{
avatarList
=
ArrayList
(
V2APIAvatar
.
loadAllAvatarsFromServer
())
for
(
avatar
in
avatarList
)
{
val
res
=
V2APIAvatar
.
loadAvatarFromServer
(
avatar
.
image
)
avatarHashMap
[
avatar
]
=
res
}
avatarSortedMap
=
avatarHashMap
.
toSortedMap
(
compareBy
{
it
.
id
})
true
}
catch
(
e
:
Exception
)
{
errorMessage
=
e
.
message
!!
...
...
@@ -185,20 +178,20 @@ class UserDataSourceImpl : UserDataSource {
override
fun
onPostExecute
(
success
:
Boolean
?)
{
if
(
success
!!
)
{
callback
.
onLoadAvatarListSuccess
(
avatar
SortedMap
)
callback
.
onLoadAvatarListSuccess
(
avatar
List
)
}
else
{
callback
.
onLoadAvatarListFail
(
errorMessage
)
}
}
}
override
fun
loadUnlockedAvatarsFromServer
(
callback
:
UserDataSource
.
LoadAvatarListCallback
)
{
override
fun
loadUnlockedAvatarsFromServer
(
callback
:
UserDataSource
.
Load
Unlocked
AvatarListCallback
)
{
val
getUnlockedAvatarsTask
=
GetUnlockedAvatarsTask
(
callback
)
getUnlockedAvatarsTask
.
executeOnExecutor
(
AsyncTask
.
THREAD_POOL_EXECUTOR
)
}
class
GetUnlockedAvatarsTask
(
var
callback
:
UserDataSource
.
LoadAvatarListCallback
)
:
AsyncTask
<
Void
,
Void
,
Boolean
>()
{
class
GetUnlockedAvatarsTask
(
var
callback
:
UserDataSource
.
Load
Unlocked
AvatarListCallback
)
:
AsyncTask
<
Void
,
Void
,
Boolean
>()
{
lateinit
var
avatarList
:
ArrayList
<
Avatar
>
lateinit
var
avatarSortedMap
:
SortedMap
<
Avatar
,
ByteArray
>
private
var
avatarHashMap
:
HashMap
<
Avatar
,
ByteArray
>
=
HashMap
()
...
...
app/src/main/java/de/akamu/tudarmstadt/features/profile/AvatarGridAdapter.kt
View file @
398eec8a
...
...
@@ -7,6 +7,7 @@ import android.view.ViewGroup
import
android.widget.AdapterView
import
android.widget.ImageView
import
android.widget.TextView
import
androidx.core.content.ContextCompat
import
androidx.recyclerview.widget.RecyclerView
import
com.bumptech.glide.Glide
import
de.akamu.tudarmstadt.R
...
...
@@ -93,7 +94,7 @@ class AvatarGridAdapter(
.
into
(
avatarImg
)
}
else
{
Glide
.
with
(
context
)
.
load
(
context
.
getDrawable
(
R
.
drawable
.
lockavatar
))
.
load
(
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
lockavatar
))
.
into
(
avatarImg
)
}
avatarUnlockLevel
.
text
=
String
.
format
(
"LVL %d"
,
mAvatar
.
level
)
...
...
app/src/main/java/de/akamu/tudarmstadt/features/profile/ProfilePresenter.kt
View file @
398eec8a
...
...
@@ -6,6 +6,7 @@ import de.akamu.tudarmstadt.interactors.UserInteractor
import
de.akamu.tudarmstadt.model.Avatar
import
de.akamu.tudarmstadt.model.User
import
java.util.*
import
kotlin.collections.ArrayList
import
kotlin.collections.HashMap
class
ProfilePresenter
(
private
var
view
:
ProfileContract
.
View
?,
private
val
interactor
:
UserInteractor
)
:
ProfileContract
.
Presenter
{
...
...
@@ -14,7 +15,7 @@ class ProfilePresenter(private var view: ProfileContract.View?, private val inte
var
allAvatarsFetched
=
false
lateinit
var
unlockedAvatars
:
SortedMap
<
Avatar
,
ByteArray
>
lateinit
var
allAvatars
:
SortedMap
<
Avatar
,
ByteArray
>
lateinit
var
allAvatars
:
ArrayList
<
Avatar
>
var
avatars
:
HashMap
<
Avatar
,
ByteArray
>
=
HashMap
()
init
{
...
...
@@ -50,10 +51,10 @@ class ProfilePresenter(private var view: ProfileContract.View?, private val inte
}
override
fun
loadAllAvatarsFromServer
()
{
interactor
.
loadAllAvatarsFromServer
(
object
:
UserDataSource
.
LoadAvatarListCallback
{
override
fun
onLoadAvatarListSuccess
(
avatar
SortedMap
:
SortedMap
<
Avatar
,
ByteArray
>)
{
interactor
.
loadAllAvatarsFromServer
(
object
:
UserDataSource
.
LoadA
llA
vatarListCallback
{
override
fun
onLoadAvatarListSuccess
(
avatar
List
:
ArrayList
<
Avatar
>)
{
allAvatarsFetched
=
true
allAvatars
=
avatar
SortedMap
allAvatars
=
avatar
List
handleCallbacksReady
()
}
...
...
@@ -65,7 +66,7 @@ class ProfilePresenter(private var view: ProfileContract.View?, private val inte
}
override
fun
loadUnlockedAvatarsFromServer
()
{
interactor
.
loadUnlockedAvatarsFromServer
(
object
:
UserDataSource
.
LoadAvatarListCallback
{
interactor
.
loadUnlockedAvatarsFromServer
(
object
:
UserDataSource
.
Load
Unlocked
AvatarListCallback
{
override
fun
onLoadAvatarListSuccess
(
avatarSortedMap
:
SortedMap
<
Avatar
,
ByteArray
>)
{
unlockedAvatarsFetched
=
true
unlockedAvatars
=
avatarSortedMap
...
...
@@ -99,12 +100,14 @@ class ProfilePresenter(private var view: ProfileContract.View?, private val inte
}
}
fun
prepareAvatars
()
{
for
(
av
in
allAvatars
.
keys
)
{
private
fun
prepareAvatars
()
{
for
(
av
in
allAvatars
)
{
if
(
unlockedAvatars
.
contains
(
av
))
{
av
.
isUnlocked
=
true
avatars
[
av
]
=
unlockedAvatars
[
av
]
!!
}
else
{
avatars
[
av
]
=
byteArrayOf
()
// leave empty will be set later
}
avatars
[
av
]
=
allAvatars
[
av
]
!!
}
}
...
...
app/src/main/java/de/akamu/tudarmstadt/interactors/UserInteractor.kt
View file @
398eec8a
...
...
@@ -4,6 +4,7 @@ import de.akamu.tudarmstadt.data.user.UserDataSource
import
de.akamu.tudarmstadt.model.Avatar
import
de.akamu.tudarmstadt.model.User
import
java.util.*
import
kotlin.collections.ArrayList
class
UserInteractor
(
private
val
dataSource
:
UserDataSource
)
:
UserDataSource
{
override
fun
updateUserInServer
(
user
:
User
,
callback
:
UserDataSource
.
UpdateUserCallback
)
{
...
...
@@ -59,10 +60,10 @@ class UserInteractor(private val dataSource: UserDataSource) : UserDataSource {
})
}
override
fun
loadAllAvatarsFromServer
(
callback
:
UserDataSource
.
LoadAvatarListCallback
)
{
dataSource
.
loadAllAvatarsFromServer
(
object
:
UserDataSource
.
LoadAvatarListCallback
{
override
fun
onLoadAvatarListSuccess
(
avatar
SortedMap
:
SortedMap
<
Avatar
,
ByteArray
>)
{
callback
.
onLoadAvatarListSuccess
(
avatar
SortedMap
)
override
fun
loadAllAvatarsFromServer
(
callback
:
UserDataSource
.
LoadA
llA
vatarListCallback
)
{
dataSource
.
loadAllAvatarsFromServer
(
object
:
UserDataSource
.
LoadA
llA
vatarListCallback
{
override
fun
onLoadAvatarListSuccess
(
avatar
List
:
ArrayList
<
Avatar
>)
{
callback
.
onLoadAvatarListSuccess
(
avatar
List
)
}
override
fun
onLoadAvatarListFail
(
reason
:
String
)
{
...
...
@@ -72,8 +73,8 @@ class UserInteractor(private val dataSource: UserDataSource) : UserDataSource {
})
}
override
fun
loadUnlockedAvatarsFromServer
(
callback
:
UserDataSource
.
LoadAvatarListCallback
)
{
dataSource
.
loadUnlockedAvatarsFromServer
(
object
:
UserDataSource
.
Load
AvatarListCallback
{
override
fun
loadUnlockedAvatarsFromServer
(
callback
:
UserDataSource
.
Load
Unlocked
AvatarListCallback
)
{
dataSource
.
loadUnlockedAvatarsFromServer
(
object
:
UserDataSource
.
Load
UnlockedAvatarListCallback
{
override
fun
onLoadAvatarListSuccess
(
avatarSortedMap
:
SortedMap
<
Avatar
,
ByteArray
>)
{
callback
.
onLoadAvatarListSuccess
(
avatarSortedMap
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment