RingRTC (along with WebRTC) are no longer included as submodules; now
they are a nearly-standard pod dependency with an extra "prebuild
checksum" to download the built artifacts.
This removes the submodules as well as the storing of the WebRTC
artifact repo commit in the app's Info.plist. RingRTC already prints
the current version in debug logs, so we're not losing anything.
The NSE’s Info.plist didn’t contain a BuildTimestamp, so it wouldn’t
have a default expiration.
The new approach reads the main app’s expiration from all of the
extensions, which helps ensure they all expire at the same time.
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.
Several strings appear to be unused. As far as I can tell, these were
added in 54b743de2d but never used.
Script output:
PluralAware.stringsdict: Removed THREAD_DETAILS_MORE_MUTUAL_GROUP_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_DAYS_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_DAYS_SHORT_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_HOURS_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_HOURS_SHORT_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_MINUTES_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_MINUTES_SHORT_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_SECONDS_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_SECONDS_SHORT_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_WEEKS_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_WEEKS_SHORT_%d
PluralAware.stringsdict: Removed TIME_AMOUNT_YEARS_%d
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
This fixes our remaining SwiftLint violations, which were small.
It also updates the precommit script to fail if any violations are
found, even warnings. This will cause CI to fail if you include a file
that isn't SwiftLint-compatible.