-
Notifications
You must be signed in to change notification settings - Fork 20
/
StartCallButton.kt
87 lines (82 loc) 路 3.23 KB
/
StartCallButton.kt
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
* Wire
* Copyright (C) 2023 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.android.ui.calling.controlbuttons
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.wire.android.R
import com.wire.android.appLogger
import com.wire.android.model.ClickBlockParams
import com.wire.android.ui.common.button.WireButtonState
import com.wire.android.ui.common.button.WireSecondaryButton
import com.wire.android.ui.theme.wireDimensions
import com.wire.android.util.permission.rememberCallingRecordAudioBluetoothRequestFlow
import com.wire.android.util.ui.PreviewMultipleThemes
@Composable
fun StartCallButton(
onPhoneButtonClick: () -> Unit,
onPermanentPermissionDecline: () -> Unit,
isCallingEnabled: Boolean
) {
val audioBTPermissionCheck = AudioBluetoothPermissionCheckFlow(
startCall = onPhoneButtonClick,
onPermanentPermissionDecline = onPermanentPermissionDecline
)
WireSecondaryButton(
onClick = audioBTPermissionCheck::launch,
leadingIcon = {
Icon(
painter = painterResource(id = R.drawable.ic_phone),
contentDescription = stringResource(R.string.content_description_conversation_phone_icon),
)
},
state = if (isCallingEnabled) WireButtonState.Default else WireButtonState.Disabled,
fillMaxWidth = false,
minHeight = MaterialTheme.wireDimensions.spacing32x,
minWidth = MaterialTheme.wireDimensions.spacing40x,
clickBlockParams = ClickBlockParams(blockWhenSyncing = true, blockWhenConnecting = true),
shape = RoundedCornerShape(size = MaterialTheme.wireDimensions.corner12x),
contentPadding = PaddingValues(0.dp)
)
}
@Composable
private fun AudioBluetoothPermissionCheckFlow(
startCall: () -> Unit,
onPermanentPermissionDecline: () -> Unit
) = rememberCallingRecordAudioBluetoothRequestFlow(
onAudioBluetoothPermissionGranted = {
appLogger.d("startCall - Permissions granted")
startCall()
},
onAudioBluetoothPermissionDenied = { },
onAudioBluetoothPermissionPermanentlyDenied = onPermanentPermissionDecline
)
@PreviewMultipleThemes
@Composable
fun PreviewStartCallButton() {
StartCallButton(
onPhoneButtonClick = {},
onPermanentPermissionDecline = {},
isCallingEnabled = true
)
}