Commit Graph

315 Commits

Author SHA1 Message Date
Evan Hahn
f5556d1857
Use durable job for sending badge gifts
Previously, sending a gift badge was not a durable operation, which
meant that crashes/failures could cause users to have their payment
methods charged without actually sending the badge.

Now, the flow is split up into two steps: non-durable parts before the
charge is attempted, and durable parts afterward.

The high-level flow is:

1. Prepare the payment, which involves a couple of repeatable network
   requests.
2. Enqueue a job with the prepared payment, that:
   1. Charges the payment method (idempotently)
   2. Requests a receipt credential (idempotently)
   3. Enqueues a gift message, and optionally a text message
3. When the job completes, open the conversation in the UI.
2022-07-01 17:10:31 -05:00
Nora Trapp
7bd167f815
Initial story sending support
* Little fix for context menu

* Add 'My Stories' section to stories tab

* Add new story thread types

* Show stories in conversation picker

* Support for sending stories

* Update story list when sending stories

* Add basic 'My Stories' view controller

* Initial stories settings screens

* Consolidate TSPrivateStoryThread and TSMyStoryThread into one class

* Require an explicit read transaction to initialize an outgoing message

* Fix linting

* Allow enabling group story from internal settings

* Fix tests

* PR Feedback
2022-06-10 22:28:03 -04:00
Evan Hahn
8009206c18 Respect recipient capabilities when sending gift badges
This respects the `giftBadges` capability when trying to send gift
badges. In other words, it prevents you from sending gift badges to
someone who lacks the capability.

The bulk of this change involves fetching and saving of this new
capability. The rest of the code involves showing it on the "choose
recipient" screen (and some debug screens).
2022-06-10 22:37:22 +00:00
Evan Hahn
e679707038 Fix SwiftLint shorthand_operator violations
The gist is:

```diff
-foo = foo + 1
+foo += 1
```

Most of the violations were in generated files, so I changed and re-ran the generator.

A few of these violations required implementing some new methods, which I added tests for.

See [the docs for this rule][0].

[0]: https://realm.github.io/SwiftLint/shorthand_operator.html
2022-06-07 14:51:57 +00:00
Max Radermacher
724ea55aa7 Add giftBadge property to messages
Also run `Scripts/sds_codegen/sds_codegen.sh`
2022-05-27 12:31:24 -07:00
Jordan Rose
49608044b7 SSK: Remove obsolete OWSMessageDecryptJob
This hasn't been used since before GRDB.
2022-04-11 14:46:43 -07:00
Evan Hahn
8b072620a6 Add "Donation Receipts" view 2022-04-11 16:21:12 -05:00
Nora Trapp
378cc730d1 codegen 2022-03-31 00:37:56 -07:00
Nora Trapp
014fe25b16 sds codegen 2022-03-31 00:34:33 -07:00
Nora Trapp
536c7170df sds codegen 2022-03-31 00:34:32 -07:00
Nora Trapp
e95e392494 Add story context to TSInteraction 2022-03-31 00:34:32 -07:00
Evan Hahn
16aa421d3e More Python 3 script fixes 2022-03-24 10:28:27 -05:00
Evan Hahn
c254811765 Remove unnecessary coding: utf-8 heading from Python scripts
Python 3 uses UTF-8 for source files by default. This removes the
unnecessary `coding: utf-8` declaration comment from all files.
2022-03-21 14:43:45 -05:00
Evan Hahn
1101db6a29 Upgrade scripts to Python 3
Python 2 was [removed from macOS in 12.3][0]. This change:

- Automatically converts many files with [2to3][1]
- Manually updates all [shebangs][2] to use `python3` instead of
  versionless `python` or `python2.7`
- Manually applies a few fixes, many of which were noted by 2to3
- Manually undoes a few fixes that were automatically done by 2to3

[0]: https://www.macrumors.com/2022/01/28/apple-removing-python-2-in-macos-12-3/
[1]: https://docs.python.org/3/library/2to3.html
[2]: https://en.wikipedia.org/wiki/Shebang_(Unix)
2022-03-21 12:58:33 -05:00
Dimitris Apostolou
62724cf0be Fix typos 2022-03-18 11:31:06 -07:00
Jordan Rose
15d13517fa Add SDSCursor protocol, for common functionality across cursors 2022-03-07 15:01:39 -08:00
Jordan Rose
61232780ee Don't reindex conversations on every model change
Every single message updates a TSThread model, but only a change in a
member's profile name or phone number, or a change to a group's model,
can update the indexing information. Turn 'shouldBeIndexedForFTS' into
a tri-state 'FTSIndexMode' with options 'never', 'manualUpdates', and
'always', and use 'manualUpdates' for TSThreads. Then explicitly
reindex on any of the changes listed above.
2022-02-01 15:05:34 -08:00
Michelle Linington
e3d18733da Bump copyright 2022-01-28 13:23:47 -08:00
Nora Trapp
edc89c3db1 Store badge receipt credential presentation on the durable job 2021-11-17 15:14:03 -08:00
Eugene Bistolas
78cb9352c3 [Badging] Durable receiptCredential fetch and redemption 2021-11-15 12:47:35 -10:00
Michelle Linington
0b698fbd69 Run codegen 2021-11-09 14:25:42 -08:00
Matthew Chen
153095a500 Reduce statics. 2021-11-02 10:36:25 -03:00
Matthew Chen
9963df1f23 Reduce statics. 2021-11-02 10:36:25 -03:00
Michelle Linington
77b7ea5c40 Fix a whole bunch of warnings 2021-10-21 21:11:26 -07:00
Ehren Kret
3d768ffe3d Update copyright dates in SDS codegen 2021-09-24 10:30:09 -03:00
Michelle Linington
c7444cb01d Remove isHidden column, use recordType instead 2021-08-26 20:57:06 -07:00
Michelle Linington
5b1b0d3bd0 Make hiddenUntilTimestamp a boolean column 2021-08-26 20:57:06 -07:00
Michelle Linington
ba89d93ee4 Add new database column 2021-08-26 20:29:21 -07:00
Matthew Chen
647f723610 Add OWSStaticOutgoingMessage. 2021-08-25 22:43:42 -03:00
Nora Trapp
1cbe9c3ee7 PR Feedback 2021-08-16 13:28:08 -07:00
Nora Trapp
42b2575775 Add isHighPriority field and promise support to message sender job queue 2021-08-16 13:27:43 -07:00
Nora Trapp
fee1bbddad Add exclusiveProcessIdentifier to SSKJobRecord 2021-08-16 13:27:00 -07:00
Michelle Linington
023b080dc3 PR Feedback: Remove leftover SDS definitions 2021-07-21 22:58:51 -07:00
Michelle Linington
2eb60643b7 Sender key decryption failure handling
Most of the work for message resend requests. Includes some rudimentary
failure UI.
2021-07-21 22:58:51 -07:00
Michelle Linington
59f2015fba Add OWSOutgoingSenderKeyDistributionMessage
When preparing to send a SenderKey message, we'll need to send out an
SKDM to participants. Although these can be tacked on to any message,
we'll need an outgoing message builder for these dedicated messages.
2021-07-21 22:58:50 -07:00
Matthew Chen
e911639154 Remove contact avatar data from SignalAccount. 2021-06-30 15:23:49 -03:00
Matthew Chen
58e27fe782 Ignore avatar in incoming contact syncs. Use batching when processing incoming/outgoing contact syncs. 2021-06-30 15:23:49 -03:00
Nora Trapp
ba4ba30177 Codegen 2021-06-30 09:54:26 -07:00
Matthew Chen
f004267e7f Fix thread record property mapping. 2021-05-25 16:22:33 -03:00
Matthew Chen
2c7c7b3d1c Replace ConversationColors with "avatar colors". 2021-05-25 16:22:31 -03:00
Matthew Chen
7a4ad637f0 Replace ConversationColors with "avatar colors". 2021-05-25 16:22:31 -03:00
Nora Trapp
e439bb619e Move isArchived, isMarkedUnread, and mutedUntilDate off of TSThread 2021-05-13 12:54:33 -07:00
Matthew Chen
34d3aeb1c8 Merge branch 'release/5.11.1' 2021-05-03 15:36:47 -03:00
Matthew Chen
10778e915c Improve handling of db corruption. 2021-05-03 15:00:33 -03:00
Nora Trapp
db3e441727 Send viewed receipts for audio messages 2021-04-29 18:01:19 -07:00
Nora Trapp
bf660c85ce Add TSGroupMember table to allow performant querying of group membership 2021-04-08 13:44:00 -07:00
Matthew Chen
46c3408726 Update SDS to reflect payment columns. 2021-04-08 09:27:05 -03:00
Nora Trapp
73f4044ebf Fix db schema 2021-04-07 18:56:01 -07:00
Matthew Chen
cbfc7be372 Revisions to payments in SSK. 2021-04-06 13:57:07 -03:00
Matthew Chen
87ace3779d Respond to CR and proto schema/reconciliation review. 2021-04-06 13:57:06 -03:00
Matthew Chen
a00d14ddc4 Payments: Models 2021-04-06 13:57:06 -03:00
Nora Trapp
63da30f617 Store mute as millisecond timestamp 2021-03-27 12:13:20 -07:00
Matthew Chen
86b8eb08b8 Remove YapDatabase.
Apply asset from design.

Fix rebase breakage.
2021-03-25 11:41:16 -03:00
Matthew Chen
d3eb77d6d3 Refine handling of unverified safety number changes. 2021-01-21 22:31:08 -03:00
Matthew Chen
3bb5f0777b Add profile bio fields to database schema. 2021-01-14 22:25:45 -03:00
Matthew Chen
111338b59d Rewrite conversation view. 2020-12-10 12:44:13 -03:00
Michelle Linington
f6a252d274 Send a group call update message when joining and leaving a group call 2020-11-19 16:02:22 -08:00
Nora Trapp
d8ca084b65 Tweak database fields and update RingRTC 2020-11-19 16:02:22 -08:00
Nora Trapp
b32c5bda4a Add scaffolding for Group Call messages 2020-11-19 16:02:22 -08:00
Matthew Chen
ce1dcbade5 Animated sticker support. 2020-09-02 13:44:15 -03:00
Nora Trapp
fc2d80335f codegen 2020-08-20 16:48:54 -07:00
Nora Trapp
b035d35510 Add dedicated video call button 2020-08-14 20:44:03 -07:00
Nora Trapp
6f963c7ba5 Add mention notification settings 2020-08-04 14:09:06 -07:00
Nora Trapp
e8ec5330a0 Add mentions to the database 2020-08-04 14:08:29 -07:00
Matthew Chen
3b5d8ac8ba Track last messaging date on user profile. 2020-07-08 11:04:01 -03:00
Matthew Chen
c7b456b0d0 Track last fetch date on user profile. 2020-07-08 11:04:01 -03:00
Matthew Chen
059909bd1b Address sticker perf hotspots. 2020-06-23 10:07:18 -03:00
Nora Trapp
d0534ea642 Preserve conversation scroll position 2020-06-18 16:25:04 -07:00
Matthew Chen
9bc526b6bb Respond to CR. 2020-06-18 12:49:35 -03:00
Matthew Chen
2a72d563ae Respond to CR. 2020-06-18 12:22:14 -03:00
Matthew Chen
a4ae58c0f6 Respond to CR. 2020-06-18 12:09:42 -03:00
Matthew Chen
c6d5a52f82 Rework SDS extensions to support deep copies and cache lifecycle. 2020-06-18 12:05:07 -03:00
Matthew Chen
b37c2bc713 Rework SDS extensions to support deep copies and cache lifecycle. 2020-06-18 12:05:07 -03:00
Matthew Chen
b1f0a869a7 Add a script to just parse & generate SSK Obj-c. 2020-06-11 17:45:39 -07:00
Matthew Chen
0891ce52e1 Copy model read cache values. Add deepCopy method to all models. 2020-06-11 13:22:16 -03:00
Nora Trapp
a9ab44741c Codegen 2020-06-07 09:35:02 -07:00
Nora Trapp
3d084f958d Mark as unread 2020-05-27 18:29:59 -07:00
Nora Trapp
3698125424 Track reaction read state 2020-04-20 10:25:31 -07:00
Matthew Chen
d57cb36ace Merge remote-tracking branch 'private/release/3.8.0' 2020-04-15 10:08:56 -03:00
Ehren Kret
d0b7faeebc Update attachment model to hold cdn key and cdn number 2020-04-14 08:52:34 -07:00
Ehren Kret
5cd2bd0fe4 Update all sds python shebang lines to 2.7 2020-04-14 08:52:34 -07:00
Matthew Chen
6ee2ad097e Prepare for per-group queues in group message processing. 2020-04-13 17:36:36 -03:00
Nora Trapp
167f88bed6 Generated code 2020-04-13 12:49:27 -07:00
Matthew Chen
2d41ad42b4 Fix build warnings around initializers. 2020-04-08 16:05:54 -03:00
Matthew Chen
41267d9e54 Add upload timestamp to attachment models. 2020-04-02 13:39:40 -03:00
Matthew Chen
1d643bb61b Clean up code generation. 2020-04-02 13:31:14 -03:00
Matthew Chen
02f853a8dc Clean up code generation. 2020-04-02 13:31:14 -03:00
Michael Kirk
9f4c8e22ed regen 2020-01-31 20:33:57 -07:00
Matthew Chen
bc0359268e Rework outgoing messages; embed change protos in outgoing change messages for groups v2. 2020-01-27 11:47:44 -03:00
Nora Trapp
a1a54c4f78 Fix column ordering 2020-01-24 13:43:35 -08:00
Michael Kirk
1fb1af3c84 regen 2020-01-23 11:55:48 -07:00
Michael Kirk
61ec8612ee revamp group updates - show source, show changes, show icon 2020-01-23 11:55:48 -07:00
Michael Kirk
904b333924 codegen handles "id" type 2020-01-23 11:55:48 -07:00
Nora Trapp
a08a8cd8a7 Codegen 2020-01-23 08:59:22 -08:00
Matthew Chen
db0adf077a Respond to CR. 2020-01-23 12:00:42 -03:00
Matthew Chen
892ce5c135 Rework message processing to handle groups v2. 2020-01-17 17:34:37 -03:00
Nora Trapp
a68f5277bf Support profile given and family names 2020-01-09 13:17:09 -08:00
Michael Kirk
9d625c2823 ContactOffersInteractions should not be saved 2019-12-18 16:52:18 -08:00
Michael Kirk
16b9ca5d69 ignore reaction messages 2019-12-07 16:57:56 -07:00
Nora Trapp
14c8f4175e Add Reaction Model 2019-11-14 13:22:47 -08:00