Commit Graph

7 Commits

Author SHA1 Message Date
mat1th
97834bfd5e Update swift lint and format + appy fixes (#2585)
## Summary
Swift lint and swiftformat are outdated. This PR does update those +
applies the new formatting form swiftformat.
There is 1 swift file with a manual change:
`Sources/Vehicle/Templates/Areas/CarPlayAreasViewModel.swift`. This is
done because `swiftlint` did create the following swiftlint error:
`error: Cyclomatic Complexity Violation: Function should have complexity
10 or less; currently complexity is 11 (cyclomatic_complexity)`.

Because it does change a lot of files the question is if we want to
finetune the `swiftformat` rules.

## Screenshots
No user facing changes.

## Link to pull request in Documentation repository
NA

## Any other notes
NA
2024-02-22 13:06:39 +01:00
Zac West
175adfaaf4 Local push on macOS (#1570)
Refs #1382 and home-assistant/core#50750.

## Summary
Uses (and requires) the core-2021.6 local push handling to subscribe to notification calls and show notifications without going through the Apple Push Notification Service.

## Screenshots
| Light | Dark |
| -- | -- |
| <img width="712" alt="Screen Shot 2021-06-06 at 18 08 59" src="https://user-images.githubusercontent.com/74188/120946730-57a8d600-c6f2-11eb-8dde-b03b42a0a03a.png"> | <img width="712" alt="Screen Shot 2021-06-06 at 18 09 09" src="https://user-images.githubusercontent.com/74188/120946737-5d9eb700-c6f2-11eb-8563-8d9b8d8e075b.png"> |

## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#539

## Any other notes
- Only works on macOS for this first round. The iOS implementation will be the same manager, but needs extensions scaffolding that I have to put together separately.
- iOS will also likely have a setting to control this behavior, since it has potential battery implications; macOS doesn't have such concerns.
- Adds tests around the parsing of the raw notification payloads that uses the same tests introduced in home-assistant/mobile-apps-fcm-push#55.
- Shows the state of the local push connectivity in Notifications. With multi-server support, this will probably need to be broken down by server, or moved into the server-specific configurations.

This also sets us up to support encrypted notifications, since we're now able to handle the service call's data without any kind of remote manipulation. Unfortunately Apple declined the entitlement which makes this extremely easy, so we'll still need to handle the "commands are unencrypted" nonsense.
2021-06-07 19:22:35 -07:00
Zac West
4bbad0ba04 Fix attachments in Watch notifications with dynamic actions (#1619)
## Summary
Implements a similar pipeline for notification content in the watch as the notification content extension.

## Screenshots
https://user-images.githubusercontent.com/74188/116958883-d670a600-ac50-11eb-9578-994ee594a271.mp4

(the video starts playing a bit faster when not recording/debugging)

![Simulator Screen Shot - Apple Watch Series 6 - 44mm - 2021-05-03 at 20 28 19](https://user-images.githubusercontent.com/74188/116958826-ab865200-ac50-11eb-98d4-70394cdd8344.png)
![Simulator Screen Shot - Apple Watch Series 6 - 44mm - 2021-05-03 20 22 51](https://user-images.githubusercontent.com/74188/116958827-ac1ee880-ac50-11eb-85ea-58751a0c42aa.png)
![Simulator Screen Shot - Apple Watch Series 6 - 44mm - 2021-05-03 20 22 04](https://user-images.githubusercontent.com/74188/116958828-ac1ee880-ac50-11eb-808c-5ea1f947e3a8.png)

## Any other notes
- Fixes text input notification actions failing to do anything. Unless we implement the 'suggestions' method (even to just return `[]`) it will fail to show the action, logging something about the `nil` default value being unacceptable.
- Fixes attachments downloaded by the service extension not showing up at all. By downloading them again, because Apple fails to correctly give us access to them.
- Adds support for lazily downloading attachments, either when not attached or with the lazy flag.
- Combines the notification controller (similar to the content extension) for all the various category types.
2021-05-03 22:35:18 -07:00
Zac West
85b5ec4579 Support attachments which aren't downloaded in advance (#1610)
## Summary
Allows attachments to be loaded on-the-fly in the content extension if they are not present.

## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#510

## Any other notes
- Adds `lazy` as an option to the `attachment` dictionary. When true, this prevents the attachment from being downloaded except when displayed in the content extension.  
  
This is similar, but not identical, to hide-thumbnail. Hiding the thumbnail still uses the internal storage of the notifications which are limited to e.g. 50mb. However, we'd still want to pre-load those attachments even if the thumbnail is hidden.
- Retries non-lazy attachments which failed due to a network error when the content extension opens.
2021-05-01 12:58:30 -07:00
Zac West
8704a75448 Fix camera-by-entity-id attachments not working with dynamic (#1607) 2021-04-29 19:26:06 -07:00
Zac West
640cca884b Add SwiftFormat to project (#1463)
Adds new fastlane lanes:
- `fastlane lint` which checks the linters
- `fastlane autocorrect` which applies the linters which can autocorrect (Rubocop, SwiftFormat)

Adds a build step to the Codegen abstract target which runs SwiftFormat in lint mode, pointing out what it's going to change when run.

Applies SwiftFormat to nearly all code -- exempts a few externally-sourced files and generated code.
2021-02-05 22:06:25 -08:00
Zac West
8ed37f02d4 Update notification attachment handling, add error images (#1301)
## Summary
- Refactors notification attachment into smaller units. Adds tests.
- Adds an image attachment with whatever the error reason is when an attachment fails to download.
- Adds a Shared framework scheme which can run just its tests. It's a bit faster than doing the whole app which has a lot of extensions and watchOS targets.

## Screenshots
![Image](https://user-images.githubusercontent.com/74188/102575375-d4de8100-40a7-11eb-868f-d19b60710bf7.PNG)

## Any other notes
This does not (yet?) create the error images for the service timeout. Not sure how relevant that may end up. I haven't yet come across a case of this happening in logs and being confusing.
2020-12-17 23:10:17 -08:00