diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/events/FbAccountEvent.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/events/FbAccountEvent.kt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/events/FbAccountEvent.kt b/app/src/main/kotlin/com/pitchedapps/frost/events/FbAccountEvent.kt new file mode 100644 index 00000000..538a7919 --- /dev/null +++ b/app/src/main/kotlin/com/pitchedapps/frost/events/FbAccountEvent.kt @@ -0,0 +1,66 @@ +package com.pitchedapps.frost.events + +import com.mikepenz.materialdrawer.AccountHeader +import com.mikepenz.materialdrawer.model.ProfileDrawerItem +import com.pitchedapps.frost.dbflow.CookieModel +import com.pitchedapps.frost.facebook.PROFILE_PICTURE_URL +import com.pitchedapps.frost.facebook.UsernameFetcher +import com.pitchedapps.frost.utils.L +import com.pitchedapps.frost.web.FrostWebViewCore + +/** + * Created by Allan Wang on 2017-06-02. + * + * An emitter for whenever a change occurs relating to the active facebook account + * All subscribers will call one of the execute methods below so the logic is handled within this class + * [data] [CookieModel] content + * [sender] Webview position that sent the event; or -1 otherwise + * [flag] See companion object + */ +class FbAccountEvent(val data: CookieModel, val sender: Int, val flag: Int) { + + init { + L.d(toString()) + } + + companion object { + const val FLAG_LOGOUT = -2 + const val FLAG_RESET = -1 + const val FLAG_NEW = 0 + const val FLAG_SWITCH = 1 + const val FLAG_USER_NAME = 2 + } + + fun execute(webView: FrostWebViewCore) { + if (sender != -1 && sender == webView.position) return + when (flag) { + FLAG_LOGOUT, FLAG_RESET, FLAG_NEW, FLAG_SWITCH -> webView.loadBaseUrl() + } + } + + /** + * If new user id is found; create an account header and fetch the username + * If the username is found and the current account is nameless, set the name + * Ignore other flags + */ + fun execute(accountHeader: AccountHeader) { + when (flag) { + FLAG_NEW -> { + val profile = ProfileDrawerItem() + .withName(data.name) + .withIcon(PROFILE_PICTURE_URL(data.id)) + accountHeader.addProfile(profile, 0) + accountHeader.setActiveProfile(profile, true) + if (data.name == null) + UsernameFetcher.fetch(data, sender) + } + FLAG_USER_NAME -> { + if (accountHeader.activeProfile.name == null) + accountHeader.activeProfile.withName(data.name) + } + FLAG_LOGOUT -> { + + } + } + } +}
\ No newline at end of file |