Previously, we collected all URL matches and then searched through them.
Now, we search lazily, which should improve performance.
I added a perf test that repeats a URL a million times. The new code
finishes in ~0.001 seconds on my machine. The old code does not finish.
* Fix story video flickering due to excessive StoryItemMediaView recreation.
* remove debug assert if no attacgment found on dismiss, only affects debug builds but can happen if deleting while in the viewer
* fix text color for replies button on iOS 13
* pr feedback
* always set caption even if nil
* Add StoryContextAssociatedData and db migrations
* Remove hideStory from ThreadAssociatedData
* Remove lastViewedStoryTimestamp and lastReceivedStoryTimestamp from TSThread
* drop deprecated columns in db migration
* add indexes
* dump schema.sql
* Update unviewed stories SQL query
* fix thread fetching for incoming story messages
* reload story tab badge when StoryContextAssociatedData changes
* Add test for TSGroupModel backwards-compatible deserialization
* move db migration
* Only use StoryContextAssociatedData for story badge count
* update StoryContextAssociatedData lastReceivedTime when a story message is deleted
* catch group threads for outgoing story messages too
* clean up sql query
* Only update lastReceievedStoryTimestamp for remote deletions
* add latestUnexpiredTimestamp to StoryContextAssociatedData
[Android][0] and [Desktop][1] have already removed this field. This
follows suit.
The highlights:
- `SignalService.proto` removes some fields by making them `reserved`
- `ProtoWrappers.py` updates our code generation to support addresses
that only have a UUID (previously, you needed both a UUID and E164
field)
- Most everything else is removing E164s
[0]: 9c266e7995
[1]: 2b0d3cab40
Once initialized, a URLSession’s configuration can’t be changed. In
order to transfer the headers, assign them to the configuration before
assigning the configuration to the session.
Smartling exposes a simple REST API that’s fairly easy to adopt.
Some differences from the old approach:
- We get UTF-8 back instead of UTF-16, so there’s no need to use iconv.
- We don’t support “nb_NO”, so we don’t need to remove it each time we
fetch translations.
- We get back English fallbacks for .stringsdict files, so there’s no
need to merge them manually ourselves.
- We no longer support country-specific locales *and* the root language,
so we don’t need to merge, for example, “es” into “es-MX”.
- We handle language mapping & duplication inside the Swift script,
which will hopefully be more reliable than cp’ing directories.
This fixes two bugs with the "New Message" shortcut:
- It was available even when you weren't registered (e.g., when you just
installed the app)
- It was not translated, so users always saw "New Message" even if their
phone wasn't in English