aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/view/page/PageFragment.kt
blob: 37bbfd4a883f8cc3a5a29921880d524acb21a2ce (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
package net.lacolaco.smileessence.view.page

import androidx.fragment.app.Fragment
import net.lacolaco.smileessence.World
import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.data.PageInfo

/**
 * Note, PageFragment is always attached to a MainActivity.
 */
abstract class PageFragment<out T : PageInfo> : Fragment() {
    protected val world by lazy {
        World[arguments!!.getLong(KEY_WORLD_USER_ID)]
    }
    protected val pageInfo by lazy {
        val uid = arguments!!.getLong(KEY_PAGEINFO_UNIQUE_ID, -2)
        if (uid == -2L)
            throw IllegalStateException("KEY_PAGEINFO_UNIQUE_ID not specified")
        @Suppress("UNCHECKED_CAST")
        world.getPageById(uid) as T
    }

    protected val mainActivity
        get() = super.getActivity() as MainActivity

    // Invoked when user click the refresh button.
    open fun refresh() {}

    companion object {
        const val KEY_WORLD_USER_ID = "KEY_WORLD_USER_ID"
        const val KEY_PAGEINFO_UNIQUE_ID = "KEY_PAGEINFO_UNIQUE_ID"
    }
}