Skip to content

Commit a2bb132

Browse files
committed
Add POSBrightnessControl utility for screen brightness
Introduces POSBrightnessControl.swift, a utility class and SwiftUI view modifier to manage and restore screen brightness for POS workflows.
1 parent 44700a8 commit a2bb132

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import SwiftUI
2+
import UIKit
3+
4+
@available(iOS 17.0, *)
5+
@Observable
6+
final class POSBrightnessControl {
7+
private var originalBrightness: CGFloat = 0.0
8+
private var isBrightnessIncreased: Bool = false
9+
10+
init() {
11+
originalBrightness = UIScreen.main.brightness
12+
}
13+
14+
func increaseBrightnessToMax() {
15+
guard !isBrightnessIncreased else { return }
16+
17+
originalBrightness = UIScreen.main.brightness
18+
UIScreen.main.brightness = 1.0
19+
isBrightnessIncreased = true
20+
}
21+
22+
func restoreOriginalBrightness() {
23+
guard isBrightnessIncreased else { return }
24+
25+
UIScreen.main.brightness = originalBrightness
26+
isBrightnessIncreased = false
27+
}
28+
29+
deinit {
30+
if isBrightnessIncreased {
31+
UIScreen.main.brightness = originalBrightness
32+
}
33+
}
34+
}
35+
36+
/// SwiftUI View Modifier for automatic brightness control
37+
@available(iOS 17.0, *)
38+
struct POSBrightnessControlModifier: ViewModifier {
39+
@State private var brightnessControl = POSBrightnessControl()
40+
41+
func body(content: Content) -> some View {
42+
content
43+
.onAppear {
44+
brightnessControl.increaseBrightnessToMax()
45+
}
46+
.onDisappear {
47+
brightnessControl.restoreOriginalBrightness()
48+
}
49+
}
50+
}
51+
52+
@available(iOS 17.0, *)
53+
extension View {
54+
/// Applies brightness control to the view, increasing brightness to maximum when the view appears
55+
func maximumScreenBrightness() -> some View {
56+
modifier(POSBrightnessControlModifier())
57+
}
58+
}

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
0174DDBF2CE600C5005D20CA /* ReceiptEmailViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0174DDBE2CE600C0005D20CA /* ReceiptEmailViewModelTests.swift */; };
5151
0177250C2E1CFF7F00016148 /* GameControllerBarcodeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0177250B2E1CFF7F00016148 /* GameControllerBarcodeParser.swift */; };
5252
0177250E2E1CFF9B00016148 /* GameControllerBarcodeParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0177250D2E1CFF9B00016148 /* GameControllerBarcodeParserTests.swift */; };
53+
01806E132E2F7F400033363C /* POSBrightnessControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01806E122E2F7F400033363C /* POSBrightnessControl.swift */; };
5354
0182C8BE2CE3B11300474355 /* MockReceiptEligibilityUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0182C8BD2CE3B10E00474355 /* MockReceiptEligibilityUseCase.swift */; };
5455
0182C8C02CE4DDC700474355 /* CardReaderTransactionAlertReceiptState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0182C8BF2CE4DDC100474355 /* CardReaderTransactionAlertReceiptState.swift */; };
5556
0182C8C22CE4F0DB00474355 /* ReceiptEmailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0182C8C12CE4F0DB00474355 /* ReceiptEmailView.swift */; };
@@ -3228,6 +3229,7 @@
32283229
0174DDBE2CE600C0005D20CA /* ReceiptEmailViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceiptEmailViewModelTests.swift; sourceTree = "<group>"; };
32293230
0177250B2E1CFF7F00016148 /* GameControllerBarcodeParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameControllerBarcodeParser.swift; sourceTree = "<group>"; };
32303231
0177250D2E1CFF9B00016148 /* GameControllerBarcodeParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameControllerBarcodeParserTests.swift; sourceTree = "<group>"; };
3232+
01806E122E2F7F400033363C /* POSBrightnessControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POSBrightnessControl.swift; sourceTree = "<group>"; };
32313233
0182C8BD2CE3B10E00474355 /* MockReceiptEligibilityUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockReceiptEligibilityUseCase.swift; sourceTree = "<group>"; };
32323234
0182C8BF2CE4DDC100474355 /* CardReaderTransactionAlertReceiptState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardReaderTransactionAlertReceiptState.swift; sourceTree = "<group>"; };
32333235
0182C8C12CE4F0DB00474355 /* ReceiptEmailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceiptEmailView.swift; sourceTree = "<group>"; };
@@ -7113,6 +7115,7 @@
71137115
026826972BF59D9E0036F959 /* Utils */ = {
71147116
isa = PBXGroup;
71157117
children = (
7118+
01806E122E2F7F400033363C /* POSBrightnessControl.swift */,
71167119
689F29192DE4557D004DF52B /* POSStockFormatter.swift */,
71177120
681BB5FD2D676060008AF8BB /* POSPadding.swift */,
71187121
681BB5FB2D676043008AF8BB /* POSSpacing.swift */,
@@ -16660,6 +16663,7 @@
1666016663
B50BB4162141828F00AF0F3C /* FooterSpinnerView.swift in Sources */,
1666116664
867B330F2B4D39B900DCBEA6 /* BlazeAddParameterView.swift in Sources */,
1666216665
D8610CE2257099E100A5DF27 /* FancyAlertViewController+UnifiedLogin.swift in Sources */,
16666+
01806E132E2F7F400033363C /* POSBrightnessControl.swift in Sources */,
1666316667
EE289AE62C9D7B31004AB1A6 /* AIToneVoiceViewModel.swift in Sources */,
1666416668
038BC37D29C37AA400EAF565 /* SetUpTapToPayCompleteViewModel.swift in Sources */,
1666516669
03E471CE293F63B4001A58AD /* PaymentCaptureOrchestrator.swift in Sources */,

0 commit comments

Comments
 (0)