1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.statusbar.notification.stack.data.repository
18 
19 import com.android.systemui.dagger.SysUISingleton
20 import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds
21 import javax.inject.Inject
22 import kotlinx.coroutines.flow.MutableStateFlow
23 
24 /**
25  * This repository contains state generated by the composable placeholders to define the position
26  * and appearance of the notification stack and related visual elements
27  */
28 @SysUISingleton
29 class NotificationPlaceholderRepository @Inject constructor() {
30 
31     /** The alpha of the shade in order to show brightness. */
32     val alphaForBrightnessMirror = MutableStateFlow(1f)
33 
34     /**
35      * The bounds of the notification shade scrim / container in the current scene.
36      *
37      * When `null`, clipping should not be applied to notifications.
38      */
39     val shadeScrimBounds = MutableStateFlow<ShadeScrimBounds?>(null)
40 
41     /** height made available to the notifications in the size-constrained mode of lock screen. */
42     val constrainedAvailableSpace = MutableStateFlow(0)
43 
44     /**
45      * Whether the notification stack is scrolled to the top; i.e., it cannot be scrolled down any
46      * further.
47      */
48     val scrolledToTop = MutableStateFlow(true)
49 }
50