package com.h.pixeldroid import android.content.Intent import android.graphics.Typeface import android.net.Uri import android.os.Bundle import android.util.Log import android.view.View import android.widget.Button import android.widget.ImageView import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.h.pixeldroid.adapters.ProfilePostsRecyclerViewAdapter import com.h.pixeldroid.api.PixelfedAPI import com.h.pixeldroid.objects.Account import com.h.pixeldroid.objects.Account.Companion.ACCOUNT_TAG import com.h.pixeldroid.objects.Relationship import com.h.pixeldroid.objects.Status import com.h.pixeldroid.utils.DBUtils import com.h.pixeldroid.utils.ImageConverter import retrofit2.Call import retrofit2.Callback import retrofit2.Response class ProfileActivity : AppCompatActivity() { private lateinit var pixelfedAPI : PixelfedAPI private lateinit var adapter : ProfilePostsRecyclerViewAdapter private lateinit var recycler : RecyclerView private lateinit var accessToken : String private lateinit var domain : String private var account: Account? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_profile) val db = DBUtils.initDB(applicationContext) val user = db.userDao().getActiveUser() domain = user?.instance_uri.orEmpty() pixelfedAPI = PixelfedAPI.create(domain) accessToken = user?.accessToken.orEmpty() db.close() // Set posts RecyclerView as a grid with 3 columns recycler = findViewById(R.id.profilePostsRecyclerView) recycler.layoutManager = GridLayoutManager(applicationContext, 3) adapter = ProfilePostsRecyclerViewAdapter() recycler.adapter = adapter setContent() } private fun setContent() { // Set profile according to given account account = intent.getSerializableExtra(ACCOUNT_TAG) as Account? account?.let { setViews() activateFollow() setPosts() } ?: run { pixelfedAPI.verifyCredentials("Bearer $accessToken") .enqueue(object : Callback { override fun onResponse(call: Call, response: Response) { if (response.code() == 200) { account = response.body()!! setViews() // Populate profile page with user's posts setPosts() } } override fun onFailure(call: Call, t: Throwable) { Log.e("ProfileActivity:", t.toString()) } }) // Edit button redirects to Pixelfed's "edit account" page val editButton = findViewById