Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
AloqaIM-Android
Commits
a41ab15e
Commit
a41ab15e
authored
Aug 09, 2017
by
Filipe de Lima Brito
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add RealmSpotlightRepository.kt
parent
acafee16
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
0 deletions
+52
-0
RealmSpotlightRepository.kt
...ersistence/realm/repositories/RealmSpotlightRepository.kt
+52
-0
No files found.
persistence-realm/src/main/java/chat/rocket/persistence/realm/repositories/RealmSpotlightRepository.kt
0 → 100644
View file @
a41ab15e
package
chat.rocket.persistence.realm.repositories
import
android.os.Looper
import
android.support.v4.util.Pair
import
chat.rocket.core.SortDirection
import
chat.rocket.core.models.Spotlight
import
chat.rocket.core.repositories.SpotlightRepository
import
chat.rocket.persistence.realm.RealmStore
import
chat.rocket.persistence.realm.models.ddp.RealmSpotlight
import
chat.rocket.persistence.realm.models.ddp.RealmSpotlight.Columns
import
hu.akarnokd.rxjava.interop.RxJavaInterop
import
io.reactivex.Flowable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.realm.Case
import
io.realm.Realm
import
io.realm.RealmResults
import
io.realm.Sort
import
java.util.ArrayList
class
RealmSpotlightRepository
(
private
val
hostname
:
String
)
:
RealmRepository
(),
SpotlightRepository
{
override
fun
getSuggestionsFor
(
term
:
String
,
direction
:
SortDirection
,
limit
:
Int
):
Flowable
<
List
<
Spotlight
>>
{
return
Flowable
.
defer
{
Flowable
.
using
<
RealmResults
<
RealmSpotlight
>,
Pair
<
Realm
,
Looper
>>({
Pair
<
Realm
,
Looper
>(
RealmStore
.
getRealm
(
hostname
),
Looper
.
myLooper
())
},
{
pair
->
RxJavaInterop
.
toV2Flowable
<
RealmResults
<
RealmSpotlight
>>(
pair
.
first
.
where
(
RealmSpotlight
::
class
.
java
)
.
beginGroup
()
.
like
(
Columns
.
NAME
,
"*$term*"
,
Case
.
INSENSITIVE
)
.
endGroup
()
.
or
()
.
beginGroup
()
.
like
(
Columns
.
USERNAME
,
"*$term*"
,
Case
.
INSENSITIVE
)
.
endGroup
()
.
findAllSorted
(
Columns
.
NAME
,
if
(
direction
==
SortDirection
.
ASC
)
Sort
.
ASCENDING
else
Sort
.
DESCENDING
)
.
asObservable
())
})
{
pair
->
close
(
pair
.
first
,
pair
.
second
)
}
.
unsubscribeOn
(
AndroidSchedulers
.
from
(
Looper
.
myLooper
()
!!
))
.
filter
{
realmSpotlightResults
->
realmSpotlightResults
.
isLoaded
&&
realmSpotlightResults
.
isValid
}
.
map
{
realmSpotlightResults
->
toList
(
safeSubList
<
RealmSpotlight
>(
realmSpotlightResults
,
0
,
limit
))
}
}
}
private
fun
toList
(
realmSpotlightList
:
List
<
RealmSpotlight
>):
List
<
Spotlight
>
{
val
total
=
realmSpotlightList
.
size
val
spotlightList
=
ArrayList
<
Spotlight
>(
total
)
(
0
..
total
-
1
).
mapTo
(
spotlightList
)
{
realmSpotlightList
[
it
].
asSpotlight
()
}
return
spotlightList
}
}
\ No newline at end of file
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