Skip to content

Commit e6d0f95

Browse files
committed
Feat: 전역 토스트 구현
- 전역에서 사용할 수 있는 BitnagilToast 를 관리하는 GlobalBitnagilToast 싱글톤 객체 추가 - MainActivity에 BitnagilToastContainer 추가
1 parent aeecfb9 commit e6d0f95

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

app/src/main/java/com/threegap/bitnagil/MainActivity.kt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,16 @@ import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
66
import androidx.activity.enableEdgeToEdge
7-
import com.threegap.bitnagil.designsystem.BitnagilTheme
7+
import androidx.compose.foundation.layout.Box
8+
import androidx.compose.foundation.layout.fillMaxSize
9+
import androidx.compose.foundation.layout.padding
10+
import androidx.compose.runtime.LaunchedEffect
11+
import androidx.compose.ui.Alignment
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.unit.dp
14+
import com.threegap.bitnagil.designsystem.component.atom.BitnagilToastContainer
15+
import com.threegap.bitnagil.designsystem.component.atom.rememberBitnagilToast
16+
import com.threegap.bitnagil.presentation.common.toast.GlobalBitnagilToast
817
import dagger.hilt.android.AndroidEntryPoint
918

1019
@AndroidEntryPoint
@@ -14,10 +23,23 @@ class MainActivity : ComponentActivity() {
1423
enableEdgeToEdge()
1524
setContent {
1625
val mainNavigator = rememberMainNavigator()
17-
BitnagilTheme {
26+
val globalToast = rememberBitnagilToast()
27+
28+
LaunchedEffect(globalToast) {
29+
GlobalBitnagilToast.initialize(globalToast)
30+
}
31+
32+
Box(modifier = Modifier.fillMaxSize()) {
1833
MainScreen(
1934
navigator = mainNavigator,
2035
)
36+
37+
BitnagilToastContainer(
38+
state = globalToast,
39+
modifier = Modifier
40+
.align(Alignment.BottomCenter)
41+
.padding(bottom = 100.dp),
42+
)
2143
}
2244
}
2345
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.threegap.bitnagil.presentation.common.toast
2+
3+
import com.threegap.bitnagil.designsystem.R
4+
import com.threegap.bitnagil.designsystem.component.atom.BitnagilToastState
5+
import java.lang.ref.WeakReference
6+
7+
object GlobalBitnagilToast {
8+
private var _toastStateRef: WeakReference<BitnagilToastState>? = null
9+
10+
fun initialize(toastState: BitnagilToastState) {
11+
_toastStateRef = WeakReference(toastState)
12+
}
13+
14+
fun show(text: String, icon: Int? = null) {
15+
_toastStateRef?.get()?.show(text, icon)
16+
}
17+
18+
fun showCheck(text: String) = show(text, R.drawable.ic_check)
19+
20+
fun showWarning(text: String) = show(text, R.drawable.ic_warning)
21+
}

0 commit comments

Comments
 (0)