Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Polish Damus Purple support #1814

Closed
4 of 5 tasks
danieldaquino opened this issue Dec 11, 2023 · 8 comments
Closed
4 of 5 tasks

Polish Damus Purple support #1814

danieldaquino opened this issue Dec 11, 2023 · 8 comments
Labels
purple Damus purple membership
Milestone

Comments

@danieldaquino
Copy link
Contributor

danieldaquino commented Dec 11, 2023

Acceptance criteria

danieldaquino added a commit to danieldaquino/damus that referenced this issue Dec 12, 2023
This commit includes various code changes necessary to get a basic proof of concept of the feature working.

This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes:
- [X] Basic Storekit configuration
- [X] Basic purchase mechanism
- [X] Basic layout and copywriting
- [X] Basic design
- [X] Manage button (To help user cancel their subscription)
- [X] Thank you confirmation + special welcome view
- [X] Star badge on profile (by checking the Damus Purple API)
- [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data

The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app)

Testing
---------

PASS

Device: iPhone 15 Pro simulator
iOS: 17.0.1
Damus: This commit
damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d
Server: Ubuntu 22.04 (VM)
Setup:
1. On the server, delete the `mdb` database files to start from scratch
2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases
3. Enable subscriptions support via developer settings with localhost test mode and restart app
4. Start server with mock parameters (Run `npm run dev`)

Steps:
1. Open top bar and click on "Purple"
2. Purple screen should appear and show both benefits and the purchase options. PASS
3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS
4. Welcome screen with animation should appear. PASS
5. Click continue and restart app (Due to known issue tracked at damus-io#1814)
6. Post something
7. Gold star should appear beside your name
8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status

Closes: damus-io#1422
danieldaquino added a commit to danieldaquino/damus that referenced this issue Dec 12, 2023
This commit includes various code changes necessary to get a basic proof of concept of the feature working.

This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes:
- [X] Basic Storekit configuration
- [X] Basic purchase mechanism
- [X] Basic layout and copywriting
- [X] Basic design
- [X] Manage button (To help user cancel their subscription)
- [X] Thank you confirmation + special welcome view
- [X] Star badge on profile (by checking the Damus Purple API)
- [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data

The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app)

Testing
---------

PASS

Device: iPhone 15 Pro simulator
iOS: 17.0.1
Damus: This commit
damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d
Server: Ubuntu 22.04 (VM)
Setup:
1. On the server, delete the `mdb` database files to start from scratch
2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases
3. Enable subscriptions support via developer settings with localhost test mode and restart app
4. Start server with mock parameters (Run `npm run dev`)

Steps:
1. Open top bar and click on "Purple"
2. Purple screen should appear and show both benefits and the purchase options. PASS
3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS
4. Welcome screen with animation should appear. PASS
5. Click continue and restart app (Due to known issue tracked at damus-io#1814)
6. Post something
7. Gold star should appear beside your name
8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status
9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS
10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple.

Feature flag testing
--------------------

PASS

Preconditions: Continue from above test
Steps:
1. Disable Damus Purple experiment support on developer settings. Restart the app.
2. Check your post. There should be no star beside your profile name. PASS
3. Check side menu. There should be no "Damus Purple" option. PASS
4. Check server logs. There should be no new requests being done to the server. PASS

Closes: damus-io#1422
@jb55
Copy link
Collaborator

jb55 commented Dec 12, 2023 via email

@alltheseas alltheseas added the purple Damus purple membership label Dec 13, 2023
@danieldaquino
Copy link
Contributor Author

  • Show user that apple takes X%/Y$ of each in app apple pay donation

this is technically not allowed by appstore guidelines

I also had a feeling this acceptance criteria item would be controversial with Apple. Thanks for confirming, I will cross it out.

@jb55
Copy link
Collaborator

jb55 commented Dec 13, 2023 via email

@danieldaquino
Copy link
Contributor Author

danieldaquino commented Dec 13, 2023

On Wed, Dec 13, 2023 at 09:52:04AM -0800, Daniel D’Aquino wrote: >> - [ ] Show user that apple takes X%/Y$ of each in app apple pay donation > > this is technically not allowed by appstore guidelines I also had a feeling this acceptance criteria item would be controversial with Apple. Thanks for confirming, I will cross it out.
Here's another interesting thing that I thought you could do but can't. Letting users know about other subscription options (lightning): "Apple currently prevents apps from letting users know about a purchasing method other than the App Store's in-app purchase system within their apps, although it does allow developers to inform customers by email. Now" I learned this from an article I read today: https://www.macrumors.com/2023/12/13/eu-plans-to-end-apple-anti-steering-rule/ Apparently EU/spotify are suing apple for this. "Spotify has argued that being unable to let iPhone users know about other payment options is anticompetitive."

@jb55, yes, I remember reading or hearing about this rule a while back.

There is an alternative though. When we present the benefits of Damus Purple to the user on the app, we could place a link saying "Learn more about Damus Purple" which them to a page on our website. In that page we can present alternative payment methods (because Damus is not only limited to iOS)

Whenever I think of this, I think OpenPhone is probably a good similar example. They offer their paid services via in-app subscriptions on their iOS app, but they also provide different payment options if the user signs up through their website. Apple cannot stop them from offering users different payment methods on their website (after all, some users might not even use iOS at all).

All it takes is the user to go to the website once (even if by accident) to find it out. Maybe they will subscribe via in-app in the first month, but they might switch out of it soon after if they know. Especially if we are allowed to charge them a different amount via in-app vs. website to cover up for the Apple tax.

@jb55
Copy link
Collaborator

jb55 commented Dec 13, 2023 via email

@danieldaquino
Copy link
Contributor Author

good call. I like the "learn more about damus purple" approach. let's do that.

Added it to the acceptance criteria!

jb55 pushed a commit that referenced this issue Dec 16, 2023
This commit includes various code changes necessary to get a basic proof of concept of the feature working.

This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes:
- [X] Basic Storekit configuration
- [X] Basic purchase mechanism
- [X] Basic layout and copywriting
- [X] Basic design
- [X] Manage button (To help user cancel their subscription)
- [X] Thank you confirmation + special welcome view
- [X] Star badge on profile (by checking the Damus Purple API)
- [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data

The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app)

Testing
---------

PASS

Device: iPhone 15 Pro simulator
iOS: 17.0.1
Damus: This commit
damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d
Server: Ubuntu 22.04 (VM)
Setup:
1. On the server, delete the `mdb` database files to start from scratch
2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases
3. Enable subscriptions support via developer settings with localhost test mode and restart app
4. Start server with mock parameters (Run `npm run dev`)

Steps:
1. Open top bar and click on "Purple"
2. Purple screen should appear and show both benefits and the purchase options. PASS
3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS
4. Welcome screen with animation should appear. PASS
5. Click continue and restart app (Due to known issue tracked at #1814)
6. Post something
7. Gold star should appear beside your name
8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status
9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS
10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple.

Feature flag testing
--------------------

PASS

Preconditions: Continue from above test
Steps:
1. Disable Damus Purple experiment support on developer settings. Restart the app.
2. Check your post. There should be no star beside your profile name. PASS
3. Check side menu. There should be no "Damus Purple" option. PASS
4. Check server logs. There should be no new requests being done to the server. PASS

Closes: #1422
jb55 pushed a commit that referenced this issue Dec 16, 2023
Testing
---------

PASS

Device: iPhone 15 Pro simulator
iOS: 17.2
Damus: This commit
damus-api: 626fb9665d8d6c576dd635d5224869cd9b69d190
Server: Ubuntu 22.04 (VM)
Setup:
1. On the server, delete the `mdb` database files to start from scratch
2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases
3. Enable subscriptions support via developer settings with localhost test mode and restart app
4. Start server with mock parameters (Run `npm run dev`)

Steps:
1. Open top bar and click on "Purple"
2. Purple screen should appear and show both benefits and the purchase options. PASS
3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS
4. Welcome screen with animation should appear. PASS
5. Click continue and restart app (Due to known issue tracked at #1814)
6. Post something
7. Gold star should appear beside your name
8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status
9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS
10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple.

Closes: #1809
Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
Signed-off-by: William Casarin <jb55@jb55.com>
jb55 pushed a commit that referenced this issue Dec 24, 2023
This commit includes various code changes necessary to get a basic proof of concept of the feature working.

This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes:
- [X] Basic Storekit configuration
- [X] Basic purchase mechanism
- [X] Basic layout and copywriting
- [X] Basic design
- [X] Manage button (To help user cancel their subscription)
- [X] Thank you confirmation + special welcome view
- [X] Star badge on profile (by checking the Damus Purple API)
- [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data

The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app)

Testing
---------

PASS

Device: iPhone 15 Pro simulator
iOS: 17.0.1
Damus: This commit
damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d
Server: Ubuntu 22.04 (VM)
Setup:
1. On the server, delete the `mdb` database files to start from scratch
2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases
3. Enable subscriptions support via developer settings with localhost test mode and restart app
4. Start server with mock parameters (Run `npm run dev`)

Steps:
1. Open top bar and click on "Purple"
2. Purple screen should appear and show both benefits and the purchase options. PASS
3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS
4. Welcome screen with animation should appear. PASS
5. Click continue and restart app (Due to known issue tracked at #1814)
6. Post something
7. Gold star should appear beside your name
8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status
9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS
10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple.

Feature flag testing
--------------------

PASS

Preconditions: Continue from above test
Steps:
1. Disable Damus Purple experiment support on developer settings. Restart the app.
2. Check your post. There should be no star beside your profile name. PASS
3. Check side menu. There should be no "Damus Purple" option. PASS
4. Check server logs. There should be no new requests being done to the server. PASS

Closes: #1422
jb55 pushed a commit that referenced this issue Dec 24, 2023
Testing
---------

PASS

Device: iPhone 15 Pro simulator
iOS: 17.2
Damus: This commit
damus-api: 626fb9665d8d6c576dd635d5224869cd9b69d190
Server: Ubuntu 22.04 (VM)
Setup:
1. On the server, delete the `mdb` database files to start from scratch
2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases
3. Enable subscriptions support via developer settings with localhost test mode and restart app
4. Start server with mock parameters (Run `npm run dev`)

Steps:
1. Open top bar and click on "Purple"
2. Purple screen should appear and show both benefits and the purchase options. PASS
3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS
4. Welcome screen with animation should appear. PASS
5. Click continue and restart app (Due to known issue tracked at #1814)
6. Post something
7. Gold star should appear beside your name
8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status
9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS
10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple.

Closes: #1809
Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
Signed-off-by: William Casarin <jb55@jb55.com>
jb55 pushed a commit to damus-io/api that referenced this issue Jan 28, 2024
This commit adds support for purple subscriber number tracking, by
enforcing the inclusion of this number whenever returning account info
in any of the routes

Testing
=======

Device: iPhone 15 simulator
iOS: 17.2
damus-api: This commit
damus-website: `80a6b6211078e7a028a5d33ab97dc4f17b6dc1d0`
Damus: `6731471c1745c86fc02d97d41abe54848f3a1029`
Setup:
- `npm run dev` mode
- Clean DB (Delete `.mdb` files before testing)
- Clean StoreKit transactions (Delete all test transactions before testing)
- Damus setup with purple feature flag enabled, and localhost mode

TEST 1: LN flow
---------------

PASS

Steps:
1. Start server
2. Open app
3. Open Purple screen
4. Go to the website
5. Go through the Lightning flow normally. Ensure that the flow is completed successfully. PASS
6. Continue in the app
7. Check that the user gets a star in their profile, with "1st" close to their name on the profile view. PASS

TEST 2: IAP flow
----------------

PASS*

Steps:
1. Start server
2. Open app
3. Open Purple screen
4. Pay for the subscription using IAP (Xcode environment)
5. Ensure that the flow is completed successfully. PASS*
6. Ensure that the user gets a star in their profile, with "1st" close to their name on the profile view. PASS

*Note: An app restart is necessary to get the iOS app to send the receipt. This is a known issue. See damus-io/damus#1814

TEST 3: Multiple accounts
-------------------------

Steps:
1. Purchase subscriptions on 3 different accounts (using any method)
2. Ensure the ordinal subscriber numbers are correct for each account (1st, 2nd, 3rd) by looking at the profile screen. PASS

TEST 4: Unit tests
------------------

PASS

Steps: Run unit tests

Changelog-Added: Add subscriber ordinal number to account info
Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
Reviewed-by: William Casarin <jb55@jb55.com>
Signed-off-by: William Casarin <jb55@jb55.com>
@danieldaquino
Copy link
Contributor Author

@alltheseas, @jb55, the only remaining item on the acceptance criteria (Polish subscription mechanism so that it registers with the server immediately after subscribing (without having to restart the app) is only relevant for Apple in-app purchases.

Perhaps we can either move this ticket to a future release milestone or split that item into a separate ticket and close this one?

@alltheseas
Copy link
Collaborator

#1948

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
purple Damus purple membership
Projects
Archived in project
Development

No branches or pull requests

3 participants