Coder Social home page Coder Social logo

koalasat / nostros Goto Github PK

View Code? Open in Web Editor NEW
402.0 402.0 30.0 7.36 MB

Nostr client on Android

License: Apache License 2.0

JavaScript 0.33% TypeScript 87.53% Java 10.94% Ruby 0.24% Objective-C 0.34% Objective-C++ 0.63%
android bitcoin deserialize foss ios lightning-network nostr react-native

nostros's Introduction

Made with 🐨

[email protected]

Mintter: http://mintter.koalasat.xyz

PGP: 8FCD BF57 4CCF D73D B68B  00CC 2F7F 61C6 146A B157

Nostr: nprofile1qqsxg45ph8gx0vdrvtzta6xal7v86frx6jvstsnvhrlvtehmwwh4epqpz4mhxue69uhk2er9dchxummnw3ezumrpdejqzrthwden5te0dehhxtnvdakqz8thwden5te0dehhxarj94c82c3wwajkcmr0wfjx2u3wdejhgqghwaehxw309ahx7um5wghx6ctnwdkh27pwvdhk6qgmwaehxw309ahx7um5wgh8xamfwdej6etwd9nk6cfwvd5qz9rhwden5te0dehhxarj9e6xsctwdvhx2agprpmhxue69uhkummnw3ezu7ntd9jzuum0vd5kzmp0qythwumn8ghj7un9d3shjtnwdaehgu3wvfskuep0qy2hwumn8ghj7un9d3shjtnwdaehgu3wvfnj7qgmwaehxw309aex2mrp0yhxummnw3ex7mt09eek7cmfv9kqp8tgee

nostros's People

Contributors

123vier avatar c4p-n1ck avatar cercatrova21 avatar dependabot[bot] avatar devsigner-xyz avatar diegogurpegui avatar dmcarrington avatar holdenbach avatar iiaannn avatar koalasat avatar kroese avatar piraces avatar piste avatar prof-xadk3 avatar solobalbo avatar w3irdrobot avatar xavierfiechter avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nostros's Issues

[Proposal] Use Kotlin Multiplatform to share business-logic between platforms

Why?

Applications have two type of code: platform-specific and platform-agnostic code. To create the best UX with the least effort, we should seek the best tool that makes the distinction easy to translate into code.

Native vs React Native vs Kotlin Multiplatform

Fully native implementations don't leave much room for reusing platform-agnostic code, while React Native makes writing platform-specific code hard. Kotlin Multiplatform strikes the best balance so far in my experience.

I'd be happy to start off with introducing Kotlin Multiplatform in from of a PoC by sharing the database logic between iOS and Android using cashapp/sqldelight.

Resources

Check URL before redirect

This is useful to protect users from malicious actors.

These screenshots have taken from Fedilab for Android app but also ProtonMail app has a similar feature.

The ProtonMail solution is better than this one because Proton team didn't implement a "check" button; when you click on a link a popup is showed automatically. So URL check is by default. Afterwards the popup is showed you can choose the proper action.

Screenshot_2023-02-07-20-45-46-60_c38dddb2ed334becc5defa8615851593 (1)

Screenshot_2023-02-07-20-45-22-60_c38dddb2ed334becc5defa8615851593 (1)

Some improvements

We already have one tap on home tab (it lift me on top again).

Quick double tap on home tab refresh the feeds.

Quick double tap on bell tab refresh notifications.

It makes the display dirty less if you eat chips, for example, you don’t have to crawl on the screen to refresh.

Instead long press on home tab might open my profile.

Feature request: NIP-06 mnemonic support

NIP-06

For example: cryptocurrency wallet apps generally strongly dissuade users from just copy-pasting the private key as it's prone to data leak (like, a rogue app which monitors the clipboard and automatically upload its content). Instead these apps guide users to write a mnemonic down on paper.

New branding

I open this issue in order to discuss proposals for new branding. Below is my proposal for the logo redesign, starting from the original idea.

01

02

03

04

05

06

07

08

09

10

11

12

I'm following 80 people, nostros only shows 24

I'd like to use this as my android client, but it isn't following all the people I'm following, it has very few of the messages I follow, and I haven't been able to figure out how to get it to load all the messages from all the people I follow. I don't dare edit anything in nostros like my follow list until I'm sure it's not going to delete all my followers.

Unable to add relays

In v0.2.1.2-alpha on pixel6pro GrapheneOS android13; when I try to add a relay by pressing the + circle, paste it in the field, then press the add button below, I get a toast message that it was added to the list, but the new relay doesn't show up. Later, if I try to add another without backing out, the add button (sometimes loses its color) contains no text, and if I press the blank add button the toast does not appear. If I try to "disable" a relay by using the switch to its right, it appears to also delete it from the list.

Today's release adds non-free & tracking components, please revert

My updater just complained:

com.nostros: needs NonFreeDep, needs NonFreeNet, needs Tracking

Checking with my library scanner yields:

Offending libs:
---------------
* Play Install Referrer Library (/com/android/installreferrer): NonFreeDep,NonFreeNet,Tracking
* Android Market (/com/google/android/finsky): NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep

3 offenders.

Are those really necessary? Seems Nostros is no longer fully FOSS then. And I'll have to add 3 anti-features now, which will look a bit scary for new users.

image

Could you please revert that and have the above mentioned libraries removed again (or at least provide a FOSS flavor that comes without them), so I can drop the AFs again? Looks a bit weird on a private messenger. What good is encryption if information leaks into side channels? Thanks in advance!

please use proper versioning

currently, each and every APK at your releases seems to identify as

package: name='com.nostros' versionCode='1' versionName='1.0'

so not only can a user never know what version is installed, but Android cannot tell if an APK you want to install is newer or not either (Android uses versionCode to tell them apart). So for the currently latest release, it should be versionName: "0.2.0.1-alpha" and versionCode: 26 (as it's the 26th release; important with this one is just that you increase it with each version – how much you increase it is up to you, but you can never decrease it anymore without forcing all users to uninstall and reinstall).

Thanks in advance for taking care!

A question about private key and howto use it with nostr_console

I am trying to login via https://github.com/vishalxl/nostr_console
I created the account (private key/public key) via nostros app in Android device.
The private key starts with letters nsec and the public key starts with letters npub.
The private key is 63 in lengh. When I use it with nostr_console -k, it will report error message Length of provided private key should be 64.
I am new to nostr. Are there different kind of private key formats?
nostr_console does mention hex private key, I don't really get what hex private key really means here.
I think I should be able to use different nostr clients because nostr is an open protocol.
Thanks a lot.

Relays list needs of local backup/restore method

Recently I added some relays to Nostros.
I assume that I will lose them if I haven't a backup of them.

Rewriting them from skratch is too much tedious.

So why do not create a local backup/restore method in order to charge it when one buy a new phone?

Add to F-Droid

Would be awesome if nostros can be installed directly from F-Droid!

Feed filters (included/excluded)

I would like to set rules and filters over the Global feed like "show me only English speaking posts", or "hide the Chinese speaking posts", or "show only profiles with linked lightning wallets" or "show me only profiles with avatar set" or "show me profile with NIP-05".

Of course also a combination among these.

Show Follower/ing on someones Userprofil

Is it possible to see wich User followed/ing a profil when you klick on a Userprofil. That would be nice for better connection and no need to search for the npub. So you can direct follow there followers or the people the user is following.

Monetization: a possible model

In my idea who would venture to write longforms (articles ~25 minutes long reading) could show 40% of the article and the remaining 60% the reader can decide if he wants to unlock the lock – in order to get the remain part of the article – by paying an invoice on the lightning network whose method of payment is decided by the editor of the article among the following:

• fixed amount
• free donation without restrictions
• free donation with minimum base
• subscribers will get a 40% discount in case of fixed price
• free only for subscribers
• automatic price calculation: for example 2000 sats every 1000 words (dictionary words, not punctuation) with optional price cap

A combination among them is also possible: for example pay "price for article lenght" and "free for subscribers".

While we figured out how the blogger will earn, how can we give a slice of the pie to the app developers?

Issues by design: relays list needs to be reorganized

In my opinion the current design of the relays list is too much confusing and it generate confusion both to visualization and logically for the app.

Currently design: My relays, Recommended
My design: In use, Archive

In my design every relay, by default is in Archive list. This avoid the double (identical) relays and avoid that relays switches cannot operate by two different locations simultaneously (try to add two identical relays and move buttons on both simultaneously, the relays go crazy).

Every time that one activates a relay it automatically goes in "In use" list.
When deactivate it goes in archive, automatically.

Optionally you could add a third list called "Favorites".

When the relays are off they will go to Archive by default: among these, those that have the star will automatically move to " Favorites".

When relays are turned on, they all move without distinction in the list "In use".

Improve UX by adding more visual feedback

The user needs more visual feedback when using the app. Like when something goes wrong, or when something works. Even UI hints helps.
I had some issues with the app and I didn't even know what happened.

I'll open a PR for this 😉

Show Connected Relays on User Profiles

When viewing someone's profile, show what relays they are connected to in order to ensure users stay connected to people they follow.

(A quick add button would be nice too)
When viewing a user profile, near the area that displays which relays that user is connected to, have a button to connect to all relays that user connects to.

Add contact button overlapped in Contacts

Hi to start with thank you.
I'm running nostros 0.2.1.2-Alpha which i got from Droid-ify provided by IzzyOnDroid.
My device is a Samsung Note 20 Ultra 5g SM-N986B
On one-ui version 5.0
Android 13
Baseband N986BXXU5GVL2
Not sure if you need anything else.
As per the screenshot you can see:

The add contact field and the cancel button overlap the Add Contact button
Thought id just give a heads up as this is alpha and all things will be ironed out.
Thank you KoalaSat 👍

Screenshot_20230125_230129_Nostros

If blocking is just hiding, we shouldn't use 'block"

I picked up this morning a discussion, that in Nostr it's not possible to really block a user in the sense to block them from completely participating with you, including blocking them from reading your notes / seeing your content. If that's also true for Nostros, the word 'block' ... block user ... should be replaced by something like "hide", so it's clearer to users that this action hides the "blocked" users notes, but doesn't prevent them form reading/seeing your posts.

crash on login for past several versions

the first few GH releases were working fine but since about 3 weeks ago the app consistently crashes on login with my main private key.

I've cleared storage, reinstalled, etc. none help. everything works fine in amethyst, nostros, and many web clients.

npub159arpjcey40pe7dtg5jkn2g2mljntqrt32q46aruam0eg897tgdqpj8xxq

Bug/Feature: Going back to home doesn't keep scroll

When opening specific notes (or threads), navigating back to the Home timeline resets the scroll to the top. It's king of annoying over time when you use the app a lot.

It would be nice to keep the scroll position

From a technical POV we should keep the timeline on memory (the entire screen probably). Not clear it from memory to be more precise. If we want to persist over re-opening of the app then a more sophisticated solution might be required, like keeping a reference of the note visible on the screen, for accounting of new notes that could appear between close and open.

Refresh doesent refresh

Nostros does not pull latest posts after initial pull. To reproduce: open app, look at "my feed", switch to another app, several hours later switch back to nostros. The feed will not refresh automatically and will not respond to 'pull down' refresh. If you switch to global feed, then back to personal feed, then it seems to reconnect and pull latest posts. It also works to go to hamburger menu, select 'about' then go back to personal feed. This behavior is consistent across about the past dozen versions.

Feature request: Delete a post

It seems most clients don't implement how to delete a post. I am not sure why.
The current relay network is not very stable. I made many duplicated posts when I want to simply post one message.
Thus, deleting the duplicated posts is important to me.
Thanks a lot.

[BUG][0.2.2.0]The first time login will auto block all users.

Sorry for my English.

After installing nostros, and login with a private key, the nostros will auto-block all users, including me.

Android OS: Android 9
Phone: Oneplus 5T

Screenshot:
Screenshot_20230203-005639

If need any information, please feel free to ask, thank you.

Design DB migrations and versioning

Right now we just launch all migrations when the APP starts to make sure the DB is up to date

database.execSQL("CREATE TABLE IF NOT EXISTS nostros_notes(\n" +

This clearly does not scale, and we need to prepare specific services for this which should check the DB version and apply the missing migrations. Also would be good to defined a good (file?) structure so each migration can be clearly spotted.

translation

Hi,may i know how to contribute for the translation of Chinese, i am not a develper, but i can help to translate it, thank you😆

Bug: Reply button covers last note of the thread

When looking at a thread, the FAB for Reply is hovering and blocking part of the last note (bottom) on the thread.
This could be easily solved by adding some padding at the bottom of that screen, so when you scroll to the bottom you always have blank space that allows you move the note to the visible area.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.