Commit Graph

156 Commits

Author SHA1 Message Date
Max Radermacher
17a2fb4093
Rename ServiceId -> UntypedServiceId 2023-07-26 16:56:19 -05:00
Max Radermacher
b593cba603
Adopt randomForTesting/constantForTesting 2023-07-26 16:29:14 -05:00
Max Radermacher
38591bdb90
Remove UUIDBackfillTask 2023-07-12 11:39:07 -05:00
Max Radermacher
39d6dc38c4
Fix 2-way contact merges 2023-07-07 13:51:22 -05:00
Max Radermacher
0c5916fb3d
Improve performance of contact merges 2023-07-07 13:24:52 -05:00
Max Radermacher
e631162b2b
Add logic to merge threads 2023-07-07 13:21:20 -05:00
Max Radermacher
5acabbe61f
Prepare interactions for modern recipient merging 2023-06-28 11:58:44 -05:00
Max Radermacher
13b676391b Merge OWSUserProfiles during recipient merges 2023-06-23 12:53:12 -05:00
Max Radermacher
1ca2d2a841 Add SignalRecipient isEqual & hash methods 2023-06-14 11:29:06 -05:00
Max Radermacher
ca3b018734
Add & use DisappearingMessagesConfigurationStore 2023-06-05 11:00:38 -05:00
Sasha Weiss
2845d60e13
Remove lots of GV1-related code 2023-06-01 11:47:43 -07:00
Max Radermacher
a96fb35bb7
Fix SignalAccount merging logic 2023-05-30 12:51:48 -05:00
Max Radermacher
94f96fcd8e
Migrate SignalRecipient to SDSCodableModel 2023-05-24 15:50:17 -07:00
Max Radermacher
9841190eac
Load conversation view header asynchronously 2023-05-24 09:48:17 -07:00
Harry
cc67fe55ad
SVR2 implementation part 1: local operations 2023-05-23 12:26:25 -07:00
Max Radermacher
279c518f32
Improve conversation view load performance
Co-authored-by: Harry <109690906+harry-signal@users.noreply.github.com>
2023-05-18 18:38:06 -07:00
Harry
edfc51bdf6
Add proto types to parametrized types handled by SgxWebsocket code 2023-05-18 17:03:29 -07:00
Harry
df18b98e8f
Add generalized SgxWebsocketConnection 2023-05-17 16:08:51 -07:00
Max Radermacher
62965f6781
Convert TSThread.anyRemove to ThreadRemover 2023-05-10 14:03:08 -07:00
Max Radermacher
1ee45299a6
Fix group member merges 2023-04-24 18:45:18 -07:00
Max Radermacher
4941574c8b Fix handling of the isDirty flag 2023-04-24 10:41:26 -07:00
Max Radermacher
7d0d59f451
Support contact merges for yourself 2023-04-20 14:11:51 -07:00
Max Radermacher
a8511014cb
Use LocalIdentifiers in Storage Service 2023-04-14 10:20:58 -07:00
Sasha Weiss
f1063c1071
Migrate OWSDevice to SDSCodableModel 2023-04-13 14:00:46 -07:00
Evan Hahn
e5fd132778
Registration: fix leading 0 being added 2023-04-06 14:05:28 -05:00
Max Radermacher
aaf1d0e0b6
Clean up SignalRecipient create & fetch APIs 2023-03-29 18:40:05 -07:00
Max Radermacher
52b29a7344
Clean up logic that builds the TSGroupMember table
Also:
* Remove Obj-C support from group member properties
2023-03-27 12:52:54 -07:00
Max Radermacher
cf8593bbe3
Add tests for 2-way contact merging logic 2023-03-23 14:00:52 -07:00
Max Radermacher
ebf6b8f5e7
Support PNIs in SignalServiceAddress 2023-03-23 12:43:01 -07:00
Evan Hahn
91c841dc3c Merge redundant callingCode(fromCountryCode:) tests
This test-only change should have no user impact.

`PhoneNumberUtil.callingCode(fromCountryCode:)` was tested in two
places. This combines them and moves the tests to Swift.
2023-03-15 12:41:19 -05:00
Harry
a146e18aaf
Set up account state and exit registration
* Go to chat list view after registration

* sync system contacts during registration

* Use explicit local credentials for storage service operations during registration

* fix tests

* Quick hack to get through double pin confirmation

* Finishing touches

* lint

* fix build

* reload phone number discoverability after storage service sync

* fix tests again

* Take chat auth on account and contact record initializers

* Change around branches for clarity in OWSUserProfile

* pr comments

* Split ChatServiceAuth into the same and AuthedAccount

* fix tests

* merge woes
2023-03-09 21:54:51 -08:00
Sasha Weiss
82fad84831
Initial implementation of PNI change-number 2023-03-09 17:13:16 -08:00
Max Radermacher
6dede44db6
Remove unused CDSv1 code
It’s been replaced by CDSv2.
2023-02-22 14:43:09 -08:00
Max Radermacher
42bfe615ff
Check PNI before E164 in CDS lookups 2023-02-22 10:37:39 -08:00
Max Radermacher
59593c3c97
Add ServiceId & E164 types
* Use the new E164 type in a few places
* Use the new ServiceId type in a few places
2023-02-21 23:13:46 -08:00
Evan Hahn
3586894501
Consolidate E164 -> PhoneNumber code 2023-02-16 09:57:15 -08:00
Max Radermacher
56154557dd
Add isStructurallyValidE164
This merges & replaces `resemblesE164:` and `isValidE164`.

Co-authored-by: Evan Hahn <69474926+EvanHahn-Signal@users.noreply.github.com>
2023-02-13 13:45:00 -08:00
Max Radermacher
73ac0c69a1
Add SignalRecipient.deviceIds 2023-02-08 13:46:15 -08:00
Harry
003cc19e62
Update SignalCoreKit. Use explicit DispatchQueue instead of relying on the implicit type on promise 'on' params
* Use explicit DispatchQueue instead of relying on the implicit type on promise 'on' params

* Update SignalCoreKit
2023-02-07 16:14:39 -08:00
Max Radermacher
3a1556ca46 Clean up & Swiftify allSortedContacts 2023-01-30 12:15:11 -08:00
Max Radermacher
d7c52b6ad0
Fix bugs marking SignalRecipients as registered
Previously, low-trust SignalRecipients wouldn’t be marked as registered
unless they were newly-created. Now, they are marked as registered in
places where they should be (eg, successfully sending a message or
fetching a pre key means that the device exists).

As part of this change, SignalRecipients are unregistered by default,
though most call sites still mark them as registered immediately, so the
behavior in practice will be identical. There are a few places (such as
ensureAccountId) which will no longer mark new values as registered.

Finally, creating a new SignalRecipient would also update Storage
Service, even if that recipient was created in response to a storage
service update. Now, recipients updated as part of storage service
operations won’t immediately trigger another storage service update.
2023-01-03 13:23:33 -08:00
Max Radermacher
921301cdb0
Add CDSv2 2022-12-14 16:30:35 -08:00
Evan Hahn
127958a8fa
Swiftify a few phone number utility methods
This converts `PhoneNumberUtil.countryNameFromCountryCode`,
`PhoneNumberUtil.countryCodesForSearchTerm`, and `PhoneNumberUtil.name`
to Swift. I renamed `PhoneNumberUtil.name` to `does` for clarity, and
made it private.

This also lets us remove several utility methods.
2022-12-07 08:32:24 -06:00
Max Radermacher
50e0405276
Add ContactDiscoveryManager
RATE LIMITS & IS CRITICAL PRIORITY

Before this change, there was a notion of “critical” discovery tasks
that had their own rate limit, and that rate limit was used for
UUIDBackfillTask. In this change, that logic has been generalized to
consider a separate rate limit for additional request types.

QUEUE PRIORITIES

All of the discovery operations were updated to use `.userInitiated` as
their priority. Before this change, the `UUIDBackfillTask` and message
sending flow used lower priorities. However, both of those should use
higher priorities -- the former blocks receiving messages and the latter
blocks outgoing messages. This change allows the code to be simplified.

TESTS

This removes most of the existing `UUIDBackfillTaskTest` test cases
(they were commented out) and all of the `ContactDiscoveryTaskTest` test
cases (which were for the rate limiter, which has been moved elsewhere).

It introduces a few new tests. These aren’t meant to be exhausive;
instead, they’re meant to hit most of the code in the new classes and a
few specific edge cases that aren’t likely to be hit in normal use.
2022-11-15 13:37:28 -08:00
Evan Hahn
b7cb7eb403
Test TSContactThread's canSendChatMessagesToThread() 2022-10-28 16:16:00 -05:00
Evan Hahn
370ff654e7
Change license to AGPL
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
2022-10-13 08:25:37 -05:00
Max Radermacher
3ffa2dca2c
Fix nullability for countryNameFromCountryCode 2022-10-11 17:30:58 -07:00
Evan Hahn
a066511a62 Remove useless test setup/teardown
We had a lot of functions like this, which are useless:

    override func setUp() {
        super.setUp()
    }

This removes them.
2022-10-04 14:06:34 -07:00
Evan Hahn
c5b4f67613 Swiftify contact thread tests
_This change should have no user impact._

A very mechanical change. No surprises.
2022-09-22 14:41:59 -07:00
Max Radermacher
88bc6e43d8 Refactor encodeE164s
- Remove duplicate check for a `+` at the beginning of each value.

- Don’t return a big-endian UInt64 from a method. The type information
  (unfortunately) doesn’t include endianness, which makes that approach
  somewhat more error-prone.

- Add a type that tracks validated input/output pairs. Future changes
  will want to perform the validation and then use both input & output.
2022-09-21 12:47:29 -07:00