@@ -9,68 +9,57 @@ import Alamofire
9
9
* Since iOS 10 extension's height is 110 pixels
10
10
*/
11
11
12
- let spinner = UIActivityIndicatorView ( style: . whiteLarge)
13
12
14
13
class TodayViewController : UIViewController , NCWidgetProviding {
15
14
@IBOutlet weak var label : UILabel !
15
+ @IBOutlet weak var spinner : UIActivityIndicatorView !
16
+
16
17
var labelHeight : CGFloat = 0.0 ;
17
18
18
19
override func viewDidLoad( ) {
19
20
super. viewDidLoad ( )
20
- }
21
-
22
- override func viewDidAppear( _ animated: Bool ) {
23
- spinner. hidesWhenStopped = true
24
- self . view. addSubview ( spinner)
25
- spinner. center = self . view. center
26
- spinner. startAnimating ( )
27
- }
28
-
29
- override func viewDidLayoutSubviews( ) {
30
- super. viewDidLayoutSubviews ( )
31
- labelHeight = self . label. frame. size. height
32
- if ( labelHeight > 110 ) {
33
- extensionContext? . widgetLargestAvailableDisplayMode = . expanded
34
- } else {
35
- extensionContext? . widgetLargestAvailableDisplayMode = . compact
36
- }
37
- }
38
-
39
- func widgetActiveDisplayModeDidChange( _ activeDisplayMode: NCWidgetDisplayMode , withMaximumSize maxSize: CGSize ) {
40
- if ( activeDisplayMode == NCWidgetDisplayMode . compact) {
41
- self . preferredContentSize = maxSize;
42
- } else {
43
- self . preferredContentSize = CGSize ( width: 0 , height: labelHeight + 5.0 ) ;
44
- }
45
- }
46
-
47
- func widgetPerformUpdate( completionHandler: ( @escaping ( NCUpdateResult ) -> Void ) ) {
48
21
self . label. text = " "
49
22
self . label. textAlignment = . left
50
- spinner. startAnimating ( )
51
-
52
23
let keychain = KeychainSwift ( )
53
24
keychain. accessGroup = " NDJHDNKXD6.dev.yannick.MigrosUsage "
54
25
55
26
guard let username = keychain. get ( " username " ) , let password = keychain. get ( " password " ) else {
56
27
self . label. text = NSLocalizedString ( " Please provide credentials. " , comment: " " )
57
- completionHandler ( . failed)
58
28
return
59
29
}
60
30
getUsageFromPortal ( username: username, password: password) { error, data in
61
31
if ( error != " " ) {
62
32
self . label. textAlignment = . center
63
33
self . label!. text = error
64
- spinner. stopAnimating ( )
65
- completionHandler ( . failed)
34
+ self . spinner. stopAnimating ( )
66
35
return
67
36
}
68
37
DispatchQueue . main. async {
69
38
let percentage = Int ( round ( ( data. used / data. total) * 100 ) )
70
39
self . label!. text = " \( percentage) % " + usageTextGB( totalFloat: data. total, usedFloat: data. used)
71
- spinner. stopAnimating ( )
72
- completionHandler ( . newData)
40
+ self . spinner. stopAnimating ( )
73
41
}
74
42
}
75
43
}
44
+
45
+ override func viewDidLayoutSubviews( ) {
46
+ super. viewDidLayoutSubviews ( )
47
+ labelHeight = self . label. frame. size. height
48
+ if ( labelHeight > 110 ) {
49
+ extensionContext? . widgetLargestAvailableDisplayMode = . expanded
50
+ } else {
51
+ extensionContext? . widgetLargestAvailableDisplayMode = . compact
52
+ }
53
+ }
54
+
55
+ func widgetActiveDisplayModeDidChange( _ activeDisplayMode: NCWidgetDisplayMode , withMaximumSize maxSize: CGSize ) {
56
+ if ( activeDisplayMode == NCWidgetDisplayMode . compact) {
57
+ self . preferredContentSize = maxSize;
58
+ } else {
59
+ self . preferredContentSize = CGSize ( width: 0 , height: labelHeight + 5.0 ) ;
60
+ }
61
+ }
62
+
63
+ // Not implementing widgetPerformUpdate means our app will not be called in the background.
64
+ // func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {}
76
65
}
0 commit comments