aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/twitter/task/Searches.kt
blob: 6a83d1ff3b8c36c0d080c6e0a9b5d9028b1860ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package net.lacolaco.smileessence.twitter.task

import net.lacolaco.smileessence.data.Account
import net.lacolaco.smileessence.entity.SavedSearch
import net.lacolaco.smileessence.entity.Tweet
import net.lacolaco.smileessence.util.BackgroundTask
import twitter4j.Query
import twitter4j.TwitterException

class Searches {
    class CreateSavedSearchTask(private val account: Account, private val query: String) : BackgroundTask<SavedSearch, Void>() {
        override fun doInBackground(): SavedSearch {
            return SavedSearch.fromTwitter(account.twitter.savedSearches().createSavedSearch(query))
        }
    }

    class DestroySavedSearchTask(private val account: Account, private val id: Long) : BackgroundTask<Unit, Void>() {
        override fun doInBackground() {
            account.twitter.savedSearches().destroySavedSearch(id)
        }
    }

    class GetAllSavedSearchesTask(private val account: Account) : BackgroundTask<List<SavedSearch>, Void>() {
        override fun doInBackground(): List<SavedSearch> {
            return account.twitter.savedSearches().savedSearches.map { SavedSearch.fromTwitter(it) }
        }
    }

    // TODO: List<Tweet> is not good here
    class SearchTask(private val account: Account, private val query: Query) : BackgroundTask<List<Tweet>, Void>() {
        override fun doInBackground(): List<Tweet> {
            return Tweet.fromTwitter(account.twitter.search(query).tweets, account.userId)
        }
    }
}