Skip to content

Instantly share code, notes, and snippets.

View widiarifki's full-sized avatar

Widia Rifkianti widiarifki

View GitHub Profile
@widiarifki
widiarifki / update_users_table.php
Created January 3, 2020 03:55
SuitCMS Migration - Add column email_verified_at.users
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class UpdateUsersTable extends Migration
{
/**
* Run the migrations.
@widiarifki
widiarifki / DatabaseSeeder.php
Created January 3, 2020 03:57
SuitCMS - Seed user @ DatabaseSeeder
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
@widiarifki
widiarifki / MainActivity.kt
Created March 5, 2021 07:42
Jetpack Navigation with BottomNavigationView
/** Launcher activity **/
package id.widiarifki.kitsu.presentation
import android.os.Bundle
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.bottomnavigation.BottomNavigationView
import dagger.hilt.android.AndroidEntryPoint
import id.widiarifki.kitsu.R
import id.widiarifki.kitsu.base.ui.activity.NonBindingActivity
package app.pengadaan.helper
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import kotlin.math.roundToInt
class ShoppingListViewModel(
private val repository: ShoppingItemRepository = ShoppingItemRepository()
) : ViewModel() {
// variables that hold state
var isLoading by mutableStateOf(true)
val shoppingItems: LiveData<List<ShoppingItem>> = getItems()
private fun getItems(): LiveData<List<ShoppingItem>> {
isLoading = true
class ShoppingListActivity : ComponentActivity() {
private val viewModel by viewModels<ShoppingListViewModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
// observeAsState() hanya bisa dipanggil dari fungsi Composable
// tujuannya a/ utk mengobserve LiveData dan direpresentasikan ke dalam State
val shoppingItemsState = viewModel.shoppingItems.observeAsState(listOf())
@Preview(showBackground = true)
@Composable
fun PreviewShoppingListScreen() {
val previewItems = List(10) { index ->
ShoppingItem(id = index, name = "Item Preview $index")
}
MaterialTheme {
ShoppingListScreen(
isLoading = true,
@Entity(tableName = "tbl_shopping_item")
data class ShoppingItem(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
@ColumnInfo(name = "name")
var name: String,
@ColumnInfo(name = "is_ticked")
var isTicked: Boolean = false
)
@Composable
fun ShoppingListScreen(
isLoading: Boolean,
shoppingItems: List<ShoppingItem>,
onAddItem: (ShoppingItem) -> Unit,
onToggleTickItem: (ShoppingItem) -> Unit,
onDeleteItem: (ShoppingItem) -> Unit
) {
// Content Container
@Composable
fun LoadingIndicator(modifier: Modifier = Modifier) {
Box(modifier = modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
CircularProgressIndicator(color = MaterialTheme.colors.primary)
}
}