Open utunga opened 2 years ago
Examples for sending emails and SMSs can be found in the side menu -> Admin Portal -> Test Contact Methods.
Packages used: flutter_email_sender flutter_sms
For Telegram:
https://t.me/{username}
to launch the Telegram web page or app (if installed) and send messages directly.For Twitter:
It is possible to use the url_launcher package to open a link like https://twitter.com/{username}
to launch the Twitter web page or app (if installed) and see the person's profile.
For Instagram:
It is possible to use the url_launcher package to open a link like https://instagram.com/{username}
to launch the Instagram web page or app (if installed) and see the person's profile.
For Slack:
It is possible to use the url_launcher package to open a link and would either open the Slack web page or app.
Deeplink using https:// (will open the web version)
Deeplink using slack:// (will open the app if installed, or throw an error)
For Facebook:
It is possible to use the url_launcher package to open a link and would either open the Facebook web page or app.
https://www.facebook.com/{page_name}
(will open the web version)fb://profile/{page_id}
on iOS or fb://page/{page_id}
on Android. (will open the app if installed, or throw an error)For WhatsApp:
It is possible to use the url_launcher and whatsapp_unilink packages to open a link that would open the WhatsApp web page or app.
For these ones which would throw an error if not installed as an app ...is it possible to tell if the app in question (eg Instagram) is installed.. ?
@utunga We can use the canLaunch(String urlString)
function from url_launcher to check if the URL can be handled or not. If not, we just open the https web link.
@utunga Be good to see matrix and ActivityPub on the list, open tech projects working together and all that. Plus, since the protocols are open and documented, in theory it ought to be fairly easy to interoperate.
That's a good point @strypey .. uhm yeah i guess it'd have to be specific clients though, but yes.
On my todo list to send a message asking the folks at xchc as to what they think are most likely to get used.
I wonder also about if you could send some screenshots of AntennaPod on Android
Also.. the more i think about this the more I feel like maybe we just need an internal messaging system in the app. Might even be easier to build that than to build out support for all the crazy different hoops you have to hop through to make a seamless messaging experience even with one of these clients - I had a good hui with @mjxchina about that.
@mjxchina what do you think? Is it simpler to just add a simple internal messaging system to the app than to add support for some of the more tricky third-party apps?
@strypey I wonder if we could add drop in support for messaging over matrix or something?
@utunga For an app where users could post requests and pick the right candidates for the work, I think it's more important to have an IM system so people can communicate inside the app directly.
We could use a 3rd party IM SDK to achieve this feature.
OK cool. So.. hmm.. maybe we should pivot on this.
I think where we are at is that your research indicates that the 'open messaging in another app' is a bit harder than we thought. - letting people just list their social media handles is easy, but using that for communications is a bit harder.
If you are able to make a recommendation for a 3rd party IM platform that would be great. For the longer term health of this platform its important that it doesn't carry with it unsustainable charges - or, really, any charges.
So, yeah I guess maybe we need to store and deliver the messages on our messaging substrate itself. Eg if we switch the back end to ssb at some point then we'd use private messaging there.. thats in the longer term .. shorter term perhaps we can store the messages unencrypted on the DGraph db? But would be great if there are dart components we can use to make the whole messaging/notification/edit draft etc experience as easy as possible?
Would be awesome if you could do some research and make a recommendation on that @mjxchina ...
@utunga For IM SDK, there are some good options in the market but they all would require a monthly fee that I would consider unsustainable for this open-source project at the current stage. They do offer a free plan but there are restrictions on how many users or connections it supports.
So I guess a better option would be to use Firebase In-App Messaging for the IM feature. And for Flutter implementations, check out these packages: flutter_chat_ui flutter_firebase_chat_core
I strongly discouraged Loomio from adding a widget for DM (Direct Messaging) between users, and instead to just deliver DMs as emails. ie the DM is delivered to the email address associated with the user account being messaged, with the user sending the message as the reply-to address. That way people can just follow up with each other from there. This works well on FreeCycle.org too, although a more recent version also displays my user chats in the web UI if I'm logged in.
@utunga
if we switch the back end to ssb at some point then we'd use private messaging there
That sounds like the best solution.
I wonder if we could add drop in support for messaging over matrix or something?
One way this could work is for Together to include a matrix client, but this would require Together users to have (or create) an account on a matrix server. Or the Together team would need to run a matrix server and have the app automatically create a new account on it as part of bootstrapping a new Together user. Also, even the simplest matrix client is going to add a lot of bulk to your app.
@utunga @mjxchina FWIW I asked the fediverse about drop-in support for matrix and got this response from a user called @deepbluev7@fosstodon.org:
"If you want to embed #matrix into your Flutter app, you can probably just use the Matrix Dart SDK.
Here is an example how to use it:
https://gitlab.com/famedly/company/frontend/famedlysdk/-/blob/main/example/main.dart
(It might be lighter weight to write your own handler for /login, /sync and /send, but the SDK gives you e2ee for basically free, if you want to.)"
That's very cool thanks @strypey .. the more i think about it the more I like this idea.
Necro-posting on an old issue that may have passed out of relevance, but FTR...
In an ideal world, everyone getting set up on Together app for the first time already has a matrix account somewhere, and all the app's chat UI has to do is function as a client for that account. In our world, you have to decide what the app will do for people who don't have one yet. Options;
the app sets up a new account on the matrix.org homeserver, or a geographically specific homeserver (like mtrx.nz for kiwis). Obvious pro is that it's low effort for Together crew compared to maintaining a homeserver yourselves. One downside is that you'd be relying on the homeserver(s) you choose to continue allowing open registrations (and to keep existing ;)
the app sets up a new account on a matrix homeserver run by Together project. One downside is that this adds an operational cost for Together project, but otherwise ought to be sustainable as long as Together project itself is healthy. On the plus side, a Together homeserver could also host 'staff' accounts for Together crewmembers, and chat rooms for Together and allied projects, potentially replacing (or bridging to) proprietary silos like Discord and Slack. Because of the way matrix is federated, rooms started on the Together homeserver could be cloned on others, so that if you ever needed to sunset the Together homeservers, the chat rooms could continue pretty much unaffected.
Research scope
For each of the following, platforms we need to
do some research
collate some relevant links
make some comments on how this would work
be clear on what information we would need to collect (eg handle) and whether we need to do a verification step (eg confirm phone number)
make a call on if its just not possible in a mobile app
Acceptance criteria
[x] Links, comments, decision on Email
[x] Links, comments, decision on (local) SMS/default messaging
[x] Links, comments, decision on Telegram
[x] Links, comments, decision on Twitter
[x] Links, comments, decision on Instagram
[x] Links, comments, decision on Slack
[x] Links, comments, decision on FB Messenger
Nice to have