Skip to content

Status overview #20931

Description

@rullzer

Summary

It would be nice if in your Nextcloud you could relay your own status to other users. So they know what you are doing.

Details

A lot of modern communication platforms have statuses. Something like that would be useful for Nextcloud as well. That way you can signal that you are busy, on holiday, on site somewhere etc.

To be extended

API

Details

DB:

  1. New table: user_status
  • id (unsigned int, not null, autoincrement)
  • user_id (string, not null)
  • status_type (string, not null) => available, busy, unavailable
  • status_icon (string) => 1 unicode character
  • message (string) => custom message
  • created_at (unsigned int, not null) => unixtime
  • clear_at (unsigned int) => unixtime

API spec (OCS):

  1. Expose user_status capability
    Req: GET /ocs/v1.php/cloud/capabilities
    Res:
{
  "ocs": {
    ...
    "data": {
      ...
      "capabilities": {
        ...
        "user_status": {
          "enabled": true
        }
      }
    }
  }
}
  1. Read all user-statuses
    Req: GET /ocs/v1.php/apps/user_status/api/v1/statuses
    Res:
{
  "ocs": {
    "meta": {
      "status": "ok",
      "statuscode": 200,
      "message": null
    },
    "data": [
      {
        "userId": "admin",
        "statusType": "busy",
        "createdAt": 1589795903
      },
      {
        "userId": "user",
        "statusType": "holiday",
        "statusIcon": "🏝",
        "message": "On Vacation",
        "createdAt": 1589795903,
        "clearAt": 1589795904,
      }
    ]
  }
}

Allowed parameters:

  • limit
  • offset
  1. Read status of specific user:
    Req: GET /ocs/v1.php/apps/user_status/api/v1/statuses/admin
    Res:
{
  "ocs": {
    "meta": {
      "status": "ok",
      "statuscode": 200,
      "message": null
    },
    "data": {
      "userId": "admin",
      "statusType": "busy",
      "createdAt": 1589795903
    }
  }
}
  1. Read status of authenticated user:
    Req: GET /ocs/v1.php/apps/user_status/api/v1/status
    Res:
{
  "ocs": {
    "meta": {
      "status": "ok",
      "statuscode": 200,
      "message": null
    },
    "data": {
      "userId": "admin",
      "statusType": "busy",
      "createdAt": 1589795903
    }
  }
}
  1. Set a new status:
    Req: PUT /ocs/v1.php/apps/user_status/api/v1/status

  2. Clear status:
    Req: DELETE /ocs/v1.php/apps/user_status/api/v1/status

Notes on privacy:

The APIs should respect the sharing privacy settings. (e.g. only allow to fetch status within own groups, etc.)

Acceptance criteria

To be extended.

  • I want to be able to see my own status overlayed on my avatar in the top right
  • I want to be able to set my status
  • I want to have at least the available statuses
    • Available
    • Busy
    • Holiday
  • In places where appropiat (specify @georgehrke @jancborchardt) I want to see the status of other users on the system
  • I want to have an API that can be used by our mobile apps as well

Activity

  1. added this to the Nextcloud 20 milestone on May 11, 2020
  2. go2sh commented on May 12, 2020

    @go2sh
    Contributor

    It would be nice to set a certain time span or end date for a status, e.g. "Holiday until 17.05.2020".

  3. georgehrke commented on May 12, 2020

    @georgehrke
    Member

    @go2s Yes, the plan is to have a "Clear status in 1 hour / 1 day / 1 week" feature.

  4. ChristophWurst commented on May 19, 2020

    @ChristophWurst
    Member

    Holiday

    Nitpick: this is a bit specific. How about unavailable, which covers vacation, out of office and being sick

  5. go2sh commented on May 19, 2020

    @go2sh
    Contributor

    I think the reason, why someone is unavailable, provides a good value for communication, because you can express a grading. If someone is sick or on vaction, you might get no answere, but if someone is out of office, or doing homeoffice, you might get answer.

  6. ChristophWurst commented on May 19, 2020

    @ChristophWurst
    Member

    Fair enough, out of office does not mean unavailable. But being sick, public holiday and vacation can be seen as unavailable IMO :)

  7. georgehrke commented on May 19, 2020

    @georgehrke
    Member

    @go2sh You will have the ability to set a custom icon and custom message like 🌴 On Vacation or 🤒 On sick leave.

    The status should really be on a lower level:

    • 🟢 Available
    • 🟠 Busy (e.g. in a meeting right now, but i will be available after)
    • 🔴 Unavailable.
  8. go2sh commented on May 19, 2020

    @go2sh
    Contributor

    Ah nice, that wasn't clear to me. :-)

  9. tobiasKaminsky commented on May 28, 2020

    @tobiasKaminsky
    Member

    So for mobile it would be great to have it in:

    • propfind "nc:sharees" of files/folders, so that we can directly show it in file list
    • search for users when sharing (should be "ocs/v2.php/apps/files_sharing/api/v1/sharees")
  10. georgehrke commented on Jun 2, 2020

    @georgehrke
    Member

    @rullzer @jancborchardt Should the user-status be visible on public pages as well or should it only be visible to other users?

  11. 2 remaining items

  12. georgehrke commented on Jul 31, 2020

    @georgehrke
    Member

    Let's keep this open to track further improvements and client parity.

  13. georgehrke commented on Aug 5, 2020

    @georgehrke
    Member

    ToDo for a follow-up PR:

    • inject user-status into share search endpoint
    • The invisible icon is black on dark background when dark theme is used.
    • Add Max length to input field

    Notes from @jancborchardt:

    • Status indicator icon overlaid on your own avatar in the top right
    • In the avatar menu which opens when you click on another person's avatar
    • In Talk in the Participants list as a subline
    • In sharing as a subline
    • In the sharing suggestion dropdown as a subline
    • In the Dashboard below the title
  14. georgehrke commented on Aug 5, 2020

    @georgehrke
    Member

    PHP API: #22106

  15. georgehrke commented on Aug 5, 2020

    @georgehrke
    Member

    Followup PR: #22109

  16. georgehrke commented on Aug 5, 2020

    @georgehrke
    Member
  17. azul commented on Aug 15, 2020

    @azul
  18. georgehrke commented on Aug 15, 2020

    @georgehrke
    Member

    @azul That is an issue in the devtools, see vuejs/devtools-v6#430.

    Vuex itself will work correctly though.

    Edit: you can just disable User Status in the apps management, if it's causing too many issues for you

  19. azul commented on Aug 16, 2020

    @azul
    Contributor

    @georgehrke You're right - it's just in the dev tools. The issue in my code was a different one. Thanks for the hints. 😄

  20. georgehrke commented on Aug 27, 2020

    @georgehrke
    Member

    Follow-up Issues:
    Indicator on Top Right Avatar: #22451
    Client Implementation Tracking: #22452

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions