Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Temporary fix]: Add a debouncer to the Omnibar Scroll Visibility animations #3518

Closed
wants to merge 43 commits into from

Conversation

afterxleep
Copy link
Collaborator

Task/Issue URL: https://app.asana.com/0/1204099484721401/1208671955053442/f
Tech Design URL:
CC:

Description:
Fixes a crash related to PDFs and scroll position

This seems to be caused by our navigation bar's hiding animation/visibility triggering a didScrollEvent, which causes the app to enter an infinite loop and eventually crash.

The issue does not seem to occur when the navigation bar is at the bottom and is not very evident on iOS 17.

Are there some iOS 18 updates that making it more evident?

This adds a debouncer to the method to break the loop while we investigate futher

Steps to test this PR:

samsymons and others added 30 commits October 21, 2024 11:26
Task/Issue URL: https://app.asana.com/0/414235014887631/1208580381705388/f
Tech Design URL:
CC:

Description:

This PR removes MockDependencyProvider and the ability to create testing instances of AppDependencyProvider. Any test files that use it have been updated to take their dependencies directly.

The only tests affected by this change are subscription ones; DownloadManagerTests had a mock dependency provider property, but it didn't appear to be used in any way.
Task/Issue URL:
https://app.asana.com/0/414709148257752/1207138951730082/f
Tech Design URL:
CC:

**Description**:
Allow marketplace URLs to work.

Note that the URL must be from a 'user' request. So we can't cancel and
re-issue the URL otherwise it doesn't work. This also means that can't
handle the case where it doesn't work unless we want to check the user
has an EU apple account, which we don't.

**Steps to test this PR**:
1. With an EU Apple ID, visit altstore.io and install their marketplace.
Should cause iOS system prompts and then install successfully.
2. With a non-EU Apple ID, visit altstore.io and try to install their
marketplace. Nothing will happen (unfortunately we are unable to catch
this case).
Task/Issue URL:
https://app.asana.com/0/1204167627774280/1208539744359975/f


**Description**:
No changes in code, just updating BSK to have the latest version
Task/Issue URL:
https://app.asana.com/0/72649045549333/1208547223289955/f
Tech Design URL:
CC:

**Description**:

Uses `NewTabPageController` as a home controller, but removes new tab
page customization capabilities based on `newTabPageSections` feature
flag state. Existing features of Home Screen should remain unchanged.

Summary of changes done in this PR:
* `SimpleNewTabPageView` now serving as a view for new tab page without
customization features. Created based on the fully featured
`NewTabPageView`.
* Favorites placeholders and add button are not visible when
customization flag is disabled.
* Report action is not added to the browsing menu when link is missing.
This prevents showing option which performs no action in case menu is
shown on NTP. (cc @afterxleep)
* Favorites data source adapter is listening for display mode changes
and updates favorites accordingly.
* Current (old) Dax Onboarding is integrated with the New Tab Page. (cc
@alessandroboron)

**Steps to test this PR**:

#### Dax onboarding
1. Install fresh app
2. Go through onboarding, make sure Dax dialogs are shown properly on
empty tab.

#### Basic functionality
1. Make sure NTP flag is disabled in debug menu.
3. Without favorites, Dax logo should be visible.
4. Add some favorites.
5. It should be possible to long press to edit/remove and drag and drop
to reorder.

#### Toolbar menu items
1. Check toolbar displays bookmarks icon when NTP sections flag
disabled.
2. Enable NTP sections flag in debug menu.
3. Reopen new tab page
4. Ensure browsing menu with shortcuts is available.

#### Sync
1. Enable sync on two devices.
2. Verify updates for favorites are visible.

**Definition of Done (Internal Only)**:

* [x] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [x] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [x] Portrait
* [x] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [x] iPhone 8
* [ ] iPhone X
* [x] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [x] iOS 15
* [ ] iOS 16
* [x] iOS 17

**Theme Testing**:

* [x] Light theme
* [x] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/72649045549333/1208262951113965/f

Description:
This change updates BSK to the version that will be used on macOS. It doesn't affect iOS at all.
Task/Issue URL:
https://app.asana.com/0/414709148257752/1208607157395789/f
Tech Design URL:
CC:

**Description**:

Updates UserDefaults API usage declaration `1C8F.1`.

**Steps to test this PR**:
1. Verify tests pass.

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
…gering the download (#3472)

Task/Issue URL:
https://app.asana.com/0/414709148257752/1207504349745342/f

**Description**:
When wallet passes are served as BLOB type downloads they just trigger
the download prompt instead of directly open their preview allowing
adding them to Wallet app.
Task/Issue URL:
https://app.asana.com/0/414709148257752/1208602903372806/f
Tech Design URL:
CC:

**Description**:

Addresses an issue when OmniBar was not sized properly on phones after
rotating to landscape and back to portrait.

Seems like root cause was some "optimization" in iOS 18 layout system
which changed when `updateConstraints` is being called. Solution was to
use `setNeedsUpdateConstraints()` while preparing cell for both "real"
and "fake" OmniBar.

Additionally call to `super.updateConstraints()` was moved to the end of
the override as highlighted in
[documentation](https://developer.apple.com/documentation/uikit/uiview/1622512-updateconstraints#discussion).

**Steps to test this PR**:
1. Rotate to landscape and back to portrait with single and multiple
tabs for both bar position settings (top and bottom).
2. Repeat for iPad

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Orientation Testing**:

* [x] Portrait
* [x] Landscape

**Device Testing**:

* [x] iPhone 8
* [x] iPhone 16
* [x] iPad

**OS Testing**:

* [x] iOS 15
* [x] iOS 17
* [x] iOS 18

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL:
https://app.asana.com/0/1148564399326804/1207106552424205/f
Tech Design URL:
CC:

**Description**:
Email parsing improved on macOS. This PR doesn't affect iOS
…nload)` (#3478)

Task/Issue URL:
https://app.asana.com/0/414709148257752/1208621179920770/f

**Description:**
When navigation should trigger download and is of data scheme handle it
via decisionHandler(.download)

**Steps to test this PR:**
- test downloads on https://napuzba.com/data-url/ (ensure proper file
name and extension)
- test website from
https://app.asana.com/0/1206777341262243/1208605967462508/f following
repro steps in
https://app.asana.com/0/0/1208605967462508/1208619416618129/f

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [ ] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [ ] Portrait
* [ ] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [ ] iPhone 8
* [ ] iPhone X
* [ ] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [ ] iOS 15
* [ ] iOS 16
* [ ] iOS 17

**Theme Testing**:

* [ ] Light theme
* [ ] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Please make sure all GH checks passed before merging. It can take around
20 minutes.
Briefly review this PR to see if there are no issues or red flags and
then merge it.
# By Michal Smaga (1) and Sam Symons (1)
# Via GitHub
* hotfix/7.141.1:
  Release 7.141.1-0 (#3479)
  Handle 'data' scheme downloads through WebKit's `decisionHandler(.download)` (#3478)

# Conflicts:
#	Configuration/Version.xcconfig
#	DuckDuckGo/Settings.bundle/Root.plist
Task/Issue URL: https://app.asana.com/0/1176956903599313/1208602127384124/f

**Description**:
Fire a pixel when we show the error page in the WebView.
Task/Issue URL: https://app.asana.com/0/1203301625297703/1207921724970682/f

**Description**:
Make running the script more explicit, by providing additional argument
if it is subsequent release. It will then fail on initial release if the
release branch exists and fail on subsequent release if release branch
does not.
Task: https://app.asana.com/0/414235014887631/1208634590356693/f

Description:

This PR fixed the following warning:

HomeMessage.xcassets:./WidgetEducation/WidgetEducationHomeScreen.imageset/(null)[2d][iphone.png] The image set "WidgetEducationHomeScreen" has an unassigned child.
The iphone.png was no referenced, but the file remained and a warning was happened.
Task/Issue URL: https://app.asana.com/0/414235014887631/1208634590356697/f
Tech Design URL:
CC:

Description:

Hi,

Removed unnecessary references from the project.

Thanks.
Task/Issue URL: https://app.asana.com/0/0/1208077416568652/f

**Description**: Updates BSK dependency
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL: https://app.asana.com/0/0/1208234424227124/f
Tech Design URL:
CC:  @ayoy 

**Description**:
- Changes nightly builds to release to TestFlight only
- Adds promote TestFlight to appstore (mirroring MacOS) which gets the
latest test flight build and uploads the meta data for that version.
Currently only tested with Alpha.

<!--
If at any point it isn't actively being worked on/ready for
review/otherwise moving forward strongly consider closing it (or not
opening it in the first place). If you decide not to close it, use Draft
PR while work is still in progress or use `DO NOT MERGE` label to
clarify the PRs state and comment with more information.
-->

**Steps to test this PR**:
- [Initial test
flow](https://github.com/duckduckgo/iOS/actions/runs/11491500989/job/31983979375)
(without upload meta data).
- This iteration of the flow only checked the version and build number
to upload without doing the upload
- For Alpha it found `Latest upload for version 7.142.0 on ios platform
is build: 1`
- For Stable it found `Latest upload for version 7.142.0 on ios platform
is build: 0`
- The nightly job ran (conveniently) to update the alpha build in
TestFlight, and a rerun of the [promote
flow](https://github.com/duckduckgo/iOS/actions/runs/11491747964/job/31984649252)
showed it found updated build number of 2 which we expect
- [Final
run](https://github.com/duckduckgo/iOS/actions/runs/11492279658) failed
due to Alpha not quite setup to accept submissions due to metadata
conflicts with stable, but it did successfully update the version and
some of the metadata, so confident this will work for stable builds.

Before 

![image](https://github.com/user-attachments/assets/a4e47883-f1bf-4256-9425-a3870a0d9be9)


After promotion run

![image](https://github.com/user-attachments/assets/1d23ea75-e26e-41de-a976-6052068f6b15)



<!--
Before submitting a PR, please ensure you have tested the combinations
you expect the reviewer to test, then delete configurations you *know*
do not need explicit testing.

Using a simulator where a physical device is unavailable is acceptable.
-->

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [ ] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [ ] Portrait
* [ ] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [ ] iPhone 8
* [ ] iPhone X
* [ ] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [ ] iOS 15
* [ ] iOS 16
* [ ] iOS 17

**Theme Testing**:

* [ ] Light theme
* [ ] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL:
https://app.asana.com/0/1108686900785972/1208264562025859/f

**Description**:
Store and keep in sync the subscription access token for the
duckduckgo.com domain cookie. For the implementation guidelines please
see description of the linked task.
Task/Issue URL:
https://app.asana.com/0/414235014887631/1207921724970682/f

**Description**:
Make sure the if condition actually is checked correctly.
Please make sure all GH checks passed before merging. It can take around
20 minutes.
Briefly review this PR to see if there are no issues or red flags and
then merge it.
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL:
https://app.asana.com/0/72649045549333/1208547223289954/f
Tech Design URL:
CC: @brindy 

**Description**:

This is a follow up after #3453.

Removes unused code related to HomePageViewController. Home renderers
abstraction was also removed, though the implementation itself is used
in both Bookmarks controller and to show Favorites while editing URL on
non-home tab.

**Steps to test this PR**:
1. Make sure code compiles and tests pass.

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [ ] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [ ] Portrait
* [ ] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [ ] iPhone 8
* [ ] iPhone X
* [ ] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [ ] iOS 15
* [ ] iOS 16
* [ ] iOS 17

**Theme Testing**:

* [ ] Light theme
* [ ] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1206329551987282/1208577512136639/f

**Description**:
Add a feature flag used to show Add to Dock during the onboarding flow.
Note that the feature will be available only for iPhone
Task/Issue URL: https://app.asana.com/0/1206329551987282/1208577512136638/f

**Description**:
Add localised strings for Add to Dock.
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL:
https://app.asana.com/0/414709148257752/1208653357224780/f

**Description**:
Attempt to fix crash:
Sentry:
https://errors.duckduckgo.com/organizations/ddg/issues/169611/?project=8&query=is%3Aunresolved+firstSeen%3A-15d&referrer=issue-stream&sort=freq&statsPeriod=14d&stream_index=0
Task/Issue URL:
https://app.asana.com/0/1206329551987282/1208577512136708/f

**Description**:
Add the Add to Dock tutorial Dax dialog.
shakyShane and others added 13 commits October 30, 2024 18:34
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL:
https://app.asana.com/0/1201141132935289/1208637202774549/f
Tech Design URL:
CC:

**Description**:

the DuckPlayer frontend will start sending a generic 'telemetry' events
soon - this PR adds support for the first one, but in a format that can
be expanded later without needing new handlers.
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL:
https://app.asana.com/0/1205591970852438/1208504563612286/f
Tech Design URL:
CC:

**Description**:

Updates new tagline. No user facing strings, but we might as well update
the test data.

<!--
If at any point it isn't actively being worked on/ready for
review/otherwise moving forward strongly consider closing it (or not
opening it in the first place). If you decide not to close it, use Draft
PR while work is still in progress or use `DO NOT MERGE` label to
clarify the PRs state and comment with more information.
-->

**Steps to test this PR**:
1.
2.

<!--
Before submitting a PR, please ensure you have tested the combinations
you expect the reviewer to test, then delete configurations you *know*
do not need explicit testing.

Using a simulator where a physical device is unavailable is acceptable.
-->

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [ ] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [ ] Portrait
* [ ] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [ ] iPhone 8
* [ ] iPhone X
* [ ] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [ ] iOS 15
* [ ] iOS 16
* [ ] iOS 17

**Theme Testing**:

* [ ] Light theme
* [ ] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL:
https://app.asana.com/0/1206329551987282/1208577512136709

**Description**:
Add the Add to Dock Promo view to the final dialog of the onboarding flow.
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL:
https://app.asana.com/0/1201037661562251/1208183525704010/f
Tech Design URL:
CC:

**Description**:

Updates BSK.

<!--
If at any point it isn't actively being worked on/ready for
review/otherwise moving forward strongly consider closing it (or not
opening it in the first place). If you decide not to close it, use Draft
PR while work is still in progress or use `DO NOT MERGE` label to
clarify the PRs state and comment with more information.
-->

**Steps to test this PR**:
1. Check macOS PR
2.

<!--
Before submitting a PR, please ensure you have tested the combinations
you expect the reviewer to test, then delete configurations you *know*
do not need explicit testing.

Using a simulator where a physical device is unavailable is acceptable.
-->

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [ ] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [ ] Portrait
* [ ] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [ ] iPhone 8
* [ ] iPhone X
* [ ] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [ ] iOS 15
* [ ] iOS 16
* [ ] iOS 17

**Theme Testing**:

* [ ] Light theme
* [ ] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL: https://app.asana.com/0/1207603085593419/1208640706072126/f
Tech Design URL:
CC:

Description:

This PR fixes the server info metadata.
Task/Issue URL:
https://app.asana.com/0/1204099484721401/1208366641490350/f

**Description**:
- Refactors DuckPlayerNavigation handler for improved navigation and
stability
- Implements Open In New Tab Behavior
- Opens "Watch in Youtube" links in new tab by default
- Fixes issues found in Open in New tab closed ship review
- Improves navigation for "Default" mode to prevent full screen videos
(https://app.asana.com/0/1204099484721401/1208528683217627/f)
- Updates pixel logic
- Removes DuckPlayer Launch Experiment logic and pixels
<!--
Note: This checklist is a reminder of our shared engineering
expectations. Feel free to change it, although assigning a GitHub
reviewer and the items in bold are required.

⚠️ If you're an external contributor, please file an issue first before
working on a PR, as we can't guarantee that we will accept your changes
if they haven't been discussed ahead of time. Thanks!
-->

Task/Issue URL:
https://app.asana.com/0/1204023833050360/1208567121137949/f
Tech Design URL:
CC:

**Description**:

<!--
If at any point it isn't actively being worked on/ready for
review/otherwise moving forward strongly consider closing it (or not
opening it in the first place). If you decide not to close it, use Draft
PR while work is still in progress or use `DO NOT MERGE` label to
clarify the PRs state and comment with more information.
-->

**Steps to test this PR**:
1. No changes for iOS.

<!--
Before submitting a PR, please ensure you have tested the combinations
you expect the reviewer to test, then delete configurations you *know*
do not need explicit testing.

Using a simulator where a physical device is unavailable is acceptable.
-->

**Definition of Done (Internal Only)**:

* [ ] Does this PR satisfy our [Definition of
Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)?

**Copy Testing**:

* [ ] Use of correct apostrophes in new copy, ie `’` rather than `'`

**Orientation Testing**:

* [ ] Portrait
* [ ] Landscape

**Device Testing**:

* [ ] iPhone SE (1st Gen)
* [ ] iPhone 8
* [ ] iPhone X
* [ ] iPhone 14 Pro
* [ ] iPad

**OS Testing**:

* [ ] iOS 15
* [ ] iOS 16
* [ ] iOS 17

**Theme Testing**:

* [ ] Light theme
* [ ] Dark theme

---
###### Internal references:
[Software Engineering
Expectations](https://app.asana.com/0/59792373528535/199064865822552)
[Technical Design
Template](https://app.asana.com/0/59792373528535/184709971311943)
Task/Issue URL:
https://app.asana.com/0/1108686900785972/1208264562025859/f

**Description**:
Initial PR -> #3488
Update to how the subscription cookie operates:
- constraint the cookie to `subscriptions.duckduckgo.com`
- on sign out do not fully remove the cookie - just clear the value
- gate the feature behind the
`setAccessTokenCookieForSubscriptionDomains` privacy config feature flag
Please make sure all GH checks passed before merging. It can take around
20 minutes.
Briefly review this PR to see if there are no issues or red flags and
then merge it.
@afterxleep afterxleep closed this Nov 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.