Expensify / App

Welcome to New Expensify: a complete re-imagination of financial collaboration, centered around chat. Help us build the next generation of Expensify by sharing feedback and contributing to the code.
https://new.expensify.com
MIT License
3.59k stars 2.93k forks source link

[Tracking / LOW] [Wave Collect] [HybridApp] Investigate Native Share for HybridApp #36613

Open grgia opened 9 months ago

grgia commented 9 months ago

Background:

V0 (NewDot-only design) tracking issue / design doc.

Moving Forward:

We originally designed this new feature for NewDot only, but as we move towards one single app (Hybrid App) on the Old Expensify App, we need to leverage/extend the existing share-to-scan receipt feature to support common chat-based sharing.

This means that in addition to Share to Scan receipt, a user will be able to share attachments/images/text/links to chats in New Expensify.

We may need to HOLD this project as HybridApp plans change or solidify, but for now we can use this issue to share results from investigations

BrtqKr commented 9 months ago

Hey @grgia, I'm from Software Mansion and I'll be handling this issue

melvin-bot[bot] commented 9 months ago

📣 @BrtqKr! 📣 Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork. Please follow these steps:

  1. Make sure you've read and understood the contributing guidelines.
  2. Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
  3. Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
  4. Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details. Screen Shot 2022-11-16 at 4 42 54 PM Format:
    Contributor details
    Your Expensify account email: <REPLACE EMAIL HERE>
    Upwork Profile Link: <REPLACE LINK HERE>
grgia commented 9 months ago

@BrtqKr could you post a quick update to this issue for tracking?

BrtqKr commented 9 months ago

The screens for this feature are mostly done, we're connecting them with onyx. Right now we're working on reusing the existing logic from the native side and expanding it with the share extension serving as the "router", which would point to the proper OldDot/NewDot flow without affecting the old logic. We're still waiting for the ios setup for AppGroups, which is already done for the old dot and is required if we want to keep everything consistent.

grgia commented 8 months ago

See https://expensify.slack.com/archives/C04878MDF34/p1710412834178559 Working on moving latest design to https://docs.google.com/document/d/14C1VifxvIXeyLAf0XstbC-wvyAb5SQZ0AOw0-jLRyZs/edit

grgia commented 8 months ago

I need to review the doc for this one. Could you link here as well @BrtqKr ? I want to unblock this this week :)

BrtqKr commented 8 months ago

Here you go https://docs.google.com/document/d/14C1VifxvIXeyLAf0XstbC-wvyAb5SQZ0AOw0-jLRyZs/edit?usp=sharing

grgia commented 7 months ago

Took a look at this today @BrtqKr. I left a comment in the doc, but I think we can use a lot of the HL from the previous doc. Do you feel comfortable running with that and moving over the information that applies to your design?

If necessary, we can also get new mock ups specific to hybrid app, we just need to center on what we haven't covered if that's the case

grgia commented 7 months ago

Was deprioritized, but we should get the HL updated and get this wrapped up in the next release cycle

melvin-bot[bot] commented 7 months ago

:wave: Hello Generalist Track Team - you have been assigned to review this High Level Design Doc. Check out this Stack Overflow for some tips on reviewing a design doc. Once you are done, simply press the Add "Reviewed Doc" comment button in the right hand side K2 panel or follow these instructions.


melvin-bot[bot] commented 7 months ago

:wave: Hello Generalist Track Team - you have been assigned to review this Detailed Design Doc. Check out this Stack Overflow for some tips on reviewing a design doc. Once you are done, simply press the Add "Reviewed Doc" comment button in the right hand side K2 panel or follow these instructions.


LLPeckham commented 6 months ago

Just a note - there are some blank sections in the detailed portion, so I wasn't sure if I should proceed with a detailed review.

grgia commented 6 months ago

Just a note - there are some blank sections in the detailed portion, so I wasn't sure if I should proceed with a detailed review.

@LLPeckham great shout, I'll take a look at those sections tomorrow (Thurs)

AndrewGable commented 6 months ago

I have read and reviewed this Design Doc!

nkuoch commented 6 months ago

I have read and reviewed this Design Doc!

JmillsExpensify commented 6 months ago

I have read and reviewed this Design Doc!

MarcFillari commented 6 months ago

@grgia it looks like this project was placed on HOLD in our internal tracking sheets based on this comment back in Feb https://github.com/Expensify/App/issues/15603#issuecomment-1934811394

Could you please follow this SO to have our CapSW tracker updated to reflect this project as ACTIVE if it is no longer on hold? Thanks! https://stackoverflowteams.com/c/expensify/questions/12234

johnmlee101 commented 6 months ago

I have read and reviewed this Design Doc!

grgia commented 6 months ago

working on manual tests and slightly updating the mocks to match our current components (no real updates to major flows, besides split)

LLPeckham commented 6 months ago

I have read and reviewed this Design Doc!

grgia commented 6 months ago

Discussion about including split started here - https://expensify.slack.com/archives/C036QM0SLJK/p1717492905833899

grgia commented 5 months ago

Catching up from having the flu, we should be able to move this forward next week

BrtqKr commented 5 months ago

@grgia are there any things that need to be resolved, or can we pass it for the review? I think I've addressed all comments in the doc

grgia commented 5 months ago

@BrtqKr I just need to update the manual tests section, I can get that done before EOW.

grgia commented 4 months ago

OOO with flu this week

grgia commented 4 months ago

Working on a summer release project right now, aiming to update the final doc ASAP

grgia commented 4 months ago

I'm wrapping up Pending/Scanning then will focus on wrapping this up.

grgia commented 3 months ago

Almost wrapped on the above

grgia commented 3 months ago

Went through doc, ensured it was filled out- https://docs.google.com/document/d/14C1VifxvIXeyLAf0XstbC-wvyAb5SQZ0AOw0-jLRyZs/edit

Posted translations in slack - https://expensify.slack.com/archives/C21FRDWCV/p1724163075264519

Reopened detailed review issues to send out for final rereview

cc @BrtqKr

BrtqKr commented 3 months ago

Sorry for the delay, I got sick on Monday.

@grgia @AndrewGable Partially related to https://github.com/Expensify/App/issues/47811, but more about the group setup in general

I've merged main and it seems like the provided group ID is either incorrect (I've tried a couple of variants besides the one from the branch) or requires further changes or an access, possibly provisioning profile. A couple of things to point out here:

  1. I do not see any app group containers in the settings and the naming pattern from the slack thread would also suggest that there might not be any configured ones available, since according to the docs

    A container ID must begin with group.

  2. I'm getting errors when attempting to access a group

Also, it turns out that without a provisioning profile, I won't be able to select a target for the share extension as well as assign it to the provided group. So I would ask you to configure those things in the first place.

I've moved some parts of the changes to this branch - it already contains a share extension template with some parts of the code for processing everything, so please just set up a group if it doesn't exist and include it inside of the share extension.

AndrewGable commented 3 months ago

Sorry @BrtqKr - Can you list out the changes you need exactly made in the Apple Developer console? I am not familiar with everything required to set up. Thanks!

BrtqKr commented 3 months ago

@AndrewGable, going step-by-step:

Firstly start from my branch, otherwise you won't be able to access the extension I've prepared

Configuring app group:

  1. Go to NewExpensify => Signing & Capabilities

Verify if the App Groups section is visible above the Associated domains

image

if it is and it contains any entries, then it means that the group exists and I need a provisioning profile to be able to access it and I won't even be able to list it otherwise.

If it isn't...

  1. + Capability => App group
  2. The App groups section should appear above associated domains and the entitlements should be modified
  3. Afterwards, add a group group.com.expensify.chat in this section

Apply App group to the share extension

  1. Select a target ShareViewController

    image
  2. Repeat the whole process from the previous point to include it in the same group - make sure you use the same name pattern.

After that push the changes to my branch. I'm not sure if this would be enough for me to access it after the configuration, but I know that in my case the operation of adding the group won't even be finished without the profile.

johnmlee101 commented 3 months ago

I have read and reviewed this Design Doc!

nkuoch commented 2 months ago

I have read and reviewed this Design Doc!

grgia commented 2 months ago

Progress Update

AndrewGable commented 2 months ago

@grgia - You are an app deployer now, so feel free to make any changes you need for this project. Please ping me if you have questions.

I believe we added App groups here: https://github.com/Expensify/App/pull/47738

grgia commented 2 months ago

Working with @BrtqKr to get the app permissions. I was able to update them locally but couldn't push to your branch

BrtqKr commented 2 months ago

Verified the permissions from the diff, seemed to be working as expected, but I'll continue working on that in the next week. We've decided to split the work with @filip-solecki - he'll be working on the the android in parallel.

grgia commented 1 month ago

Both Android and IOS issues are in progress.

grgia commented 1 month ago

Still making steady progress

grgia commented 1 month ago

IOS and Android are both in progress

grgia commented 3 weeks ago

Same as above, draft PRs expected for this week

grgia commented 1 week ago

Android and IOS are in progress, still waiting on PRs

grgia commented 6 hours ago

Same as above