LinkPreviewView was previously used to show link previews in chat and in Share Extension when text being shared contained an url. This commit renames LinkPreviewView to CVLinkPreviewView and simplifies the component to only handle sent links - support for showing intermediate "loading" state as well as having a cancel button to remove link preview - has been removed from this class.
OutgoingLinkPreviewView is used to show "link preview draft" in the chat input toolbar. This commit renames the class to LinkPreviewView and adopts this component to be used in Share Extension in place of the component mentioned above.
All those changes result in update link preview UI in Share Extension - visible when sharing a website from Safari or other mobile browser.
• bring back keyboard frame tracking to OWSViewController if running on iOS 15.
• add our own layout guide to OWSViewController that is updated based on keyboard frame notifications on iOS 15; on newer iOS versions it's a proxy to view.keyboardLayoutGuide.
• use OWSViewController.keyboardLayoutGuide where needed.
• in media composer screen (not OWSVIewController subclass) we already track keyboard frame - use that to position bottom toolbar on iOS 15.
I have also discovered that profile avatar editing screen was somewhat broken on older (15, 16) iOS versions. Fixed that here.
This included:
- Removing unavailable inits wholesale if no longer `required`
- Marking a few classes `final` so they could continue using
`Self(...)` rather than `OWSWhatever(...)`
* Make text input field's background translucent.
* Add animations to link preview panel in conversation input toolbar.
* Remove unused LinkPreviewViewDraftDelegate method.
* Add comment explaining layout logic.
* Improvements to "suggested stickers" panel in conversation input bar.
• ensure the panel doesn't show behind the text input area when sliding down.
• create panel lazily when it's needed for the first time.
* Do not disable user interaction on animated views in conversation input bar.
This change fixes an issue where Send button wasn't responsive for a few hundreds
of milliseconds after becoming visible.
* Remove "@objc" attribution in places related to ConversationInputToolbar where that is no longer necessary.
* Swiftify LinkPreviewState protocol.
* Convert ConversationScrollButton to Swift.
This change may improve performance slightly but should have no other
user impact.
`myString.isEmpty` is faster than `myString.count == 0` or equivalent,
because computing `count` may require iterating over the string.
I tried to fix all occurrences of this.
Tested this by sending a message in a group and doing a full
re-registration, just in case I broke something there.
Change license to AGPL
This commit:
- Updates the `LICENSE` file
- Start every file with something like:
// Copyright YEAR_FIRST_PUBLISHED Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
---
First, I removed existing license headers with this Ruby 3.1.2 script:
require 'set'
EXTENSIONS_TO_CHECK = Set['.h', '.hpp', '.cpp', '.m', '.mm', '.pch', '.swift']
same = 0
different = 0
all_files = `git ls-files`.lines.map { |line| line.strip }
all_files.each do |relative_path|
if relative_path == 'Pods'
next
end
unless EXTENSIONS_TO_CHECK.include? File.extname(relative_path)
next
end
path = File.expand_path(relative_path)
contents = File.read(path)
new_contents = contents.sub(/\/\/\n\/\/ Copyright .*\n\/\/\n\n/, '')
if contents == new_contents
same += 1
else
different += 1
end
File.write(path, new_contents)
end
puts "updated #{different} file(s), left #{same} untouched"
I'm sure this script could be improved, but it worked well enough.
Then, I created `Scripts/lint/lint-license-headers` and ran it to auto-
fix a lot of files. This changed the mode of some files, but I think
that's actually desirable. For example,
`SignalServiceKit/src/Util/AppContext.m` previously had a mode of
`0755/-rwxr-xr-x`, and it's now `0644/-rw-r--r--`.
Then I fixed some stragglers and updated the precommit script.
See [a similar change in the Desktop app][0].
[0]: 8bfaf598af