Code Monkey home page Code Monkey logo

bonfire's People

Contributors

lukediamond avatar misterupkeep avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bonfire's Issues

Implement roster data population

Calling getRoster() seems to only get JIDs. Populate it with avatars, moods and presences in a list in the store, so that we can display rich data in the UI.

SCRAM-SHA-1(-PLUS) + SCRAM-SHA-256(-PLUS) + SCRAM-SHA-512(-PLUS) + SCRAM-SHA3-512(-PLUS) supports

Can you add supports of:

  • SCRAM-SHA-1
  • SCRAM-SHA-1-PLUS
  • SCRAM-SHA-256
  • SCRAM-SHA-256-PLUS
  • SCRAM-SHA-512
  • SCRAM-SHA-512-PLUS
  • SCRAM-SHA3-512
  • SCRAM-SHA3-512-PLUS

You can add too:

  • SCRAM-SHA-224
  • SCRAM-SHA-224-PLUS
  • SCRAM-SHA-384
  • SCRAM-SHA-384-PLUS

"When using the SASL SCRAM mechanism, the SCRAM-SHA-256-PLUS variant SHOULD be preferred over the SCRAM-SHA-256 variant, and SHA-256 variants [RFC7677] SHOULD be preferred over SHA-1 variants [RFC5802]".

https://xmpp.org/extensions/inbox/hash-recommendations.html

-PLUS variants:

IMAP:

LDAP:

  • RFC5803: Lightweight Directory Access Protocol (LDAP) Schema for Storing Salted: Challenge Response Authentication Mechanism (SCRAM) Secrets: https://tools.ietf.org/html/rfc5803

HTTP:

2FA:

IANA:

Linked to:

Implement message search

Messages should be searchable, both by plain-text and select predicates (relevant chat, date(s), content type, etc.).

XEP Support Animations

I think the flickering should only last as long as the query is active, then the 'waterfall' delay effect should play.

Originally posted by @00drip in #46 (comment)

Also, implement a few different animations, and then pick one randomly on refresh mayhaps?

XEP-0115 Entity Capabilities

XEP-0115 makes supporting clients (and servers) generate a unique hash for their disco caps. That way, we can save on bandwidth by caching per ID, as well as stopping 'disco floods' as same-version clients with the same hash share the same caps.

Also, look into our entity cap data

Load messages from IndexedDB blocks

IndexedDB blocks are written for an arbitrary number of messages, but they are not loaded at the proper time (i.e. when switching into a chat or scrolling past the first loaded message).

Broken production builds

Nested functional components can't render on production builds (nuxt/nuxt#9366)

The intermediate workaround solution is to either inline them, or remove functional, at least until this gets fixed upstream, or Vue/Nuxt 3 comes out, whichever is sooner.

Roster gets deleted every so often

Occasionally, SET_ROSTER gets called with an empty array. This manifests at the moment with a cascade failure, resulting in UserCard accessing the property of an undefined, crashing the app.

image

The mutation is called in two (3) places, all in plugins/stanza.js, so this can happen because of two reasons:

  1. bind() is triggered with a session resumption, and getRoster() -- as it's known to -- gets an empty array
  2. iq:set:roster has two identical handlers, maybe they race condition somehow?

Avatars get updated on presence update

Most notably, when this happens, avatars flicker (presumably because they reload). This is corroborated by UPDATE_AVATAR being committed to the store.

Resource list tooltips, customizable resource present rank algorithm

XMPP presence is broadcast per user resource. This means, effectively, that each device a user has may have a different presence. To help alleviate the issue of picking the appropriate presence data to present to the user, a user may assign integer priorities to each resource.

However, this isn't a definitive solution: multiple resources may have the same priority. And picking 'latest first' isn't much of a solution as there are use cases where priorities are meant to be strictly followed. For example, a JID may belong to a store, with a single high-priority resource representing the store itself, while sub-resources may be individual workers (which may be online outside of work hours, etc.). Such complex use cases make a unique ranking impossible.

So, instead of trying to solve what is an impossible problem, we should aim to provide means to sidestep the issue.

Namely, we should provide multiple ways to rank resource presences, and give the user the option to switch between them. Examples are: 'strict priority order', 'newest first', 'weak priority, most-online', 'most-online'

This isn't an ideal solution, as sometimes the selected algorithm is inaccurate, or we want to see a list view of all resources for another reason. To this end, on desktop, hovering over someone's avatar (or online status dot, etc.), a tooltip with a list of resources and their current online state (and status message) should appear, and a fullscreen dialog or bottom sheet on mobile.

MUC Support

Support for:

  • Joining/Leaving MUCs
  • Bookmarking MUCs
  • Creating/Deleting MUCs
  • Editing MUCs
  • Moderating MUCs

Sidebar UI

On non-login pages, there should be a left sidebar displaying info such as:

  • Recent chats
  • Roster
  • MUCs
  • Settings
  • etc.

Implement i18n

Big and painful one (maybe). See: nuxt i18n module

Seems to like to do i18n by generating locale-specific routes. Our layouts stay the same though (maybe not for arabic? we could do rtl props everywhere; let's wait to blow up in the muslim world first before worrying about that though -- and let's not even think about all those vertical writing systems, sorry that you get shafted).

But it should also provide a good old locale string database

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.