Metadata-Version: 2.1
Name: baseapp-chats
Version: 0.0.5
Summary: BaseApp Chats
Home-page: https://github.com/silverlogic/baseapp-backend
Author: The SilverLogic
Author-email: dev@tsl.io
License: BSD-3-Clause  # Example license
Description: # BaseApp Chats
        
        This package provides a simple chat system for your project, where multiple profiles can chat with each other.
        
        
        ## Requirements:
        ```
        - **baseapp-core** >= 0.3.7
        - **baseapp-profile** >= 0.2.4
        ```
        
        Run `pip install baseapp-chats`
        And make sure to add the frozen version to your `requirements/base.txt` file
        
        If you want to develop, [install using this other guide](#how-to-develop).
        
        ## How to use
        
        Add `baseapp_chats` to your project's `INSTALLED_APPS`
        
        Make sure your Profile's GraphQL Object Types extends `ChatRoomsInterface` interface:
        
        ```python
        from baseapp_chats.graphql.interfaces import ChatRoomsInterface
        
        class ProfileObjectType(DjangoObjectType):
            class Meta:
                interfaces = (relay.Node, ChatRoomsInterface)
        ```
        
        This is not necessary if you are using the `baseapp-profile` as it is without a custom ProfileObjectType implementation.
        
        Expose `ChatsMutations`, `ChatsQueries` and `ChatsSubscriptions` in your GraphQL/graphene endpoint, like:
        
        ```python
        from baseapp_chats.graphql.mutations import ChatsMutations
        from baseapp_chats.graphql.queries import ChatsQueries
        from baseapp_chats.graphql.subscriptions import ChatsSubscriptions
        
        
        class Query(graphene.ObjectType, ChatsQueries):
            pass
        
        
        class Mutation(graphene.ObjectType, ChatsMutations):
            pass
        
        
        class Subscription(graphene.ObjectType, ChatsSubscriptions):
            pass
        
        
        schema = graphene.Schema(query=Query, mutation=Mutation, subscription=Subscription)
        ```
        
        Those will expose the following queries, mutations and subscriptions:
        
        ### Queries
        
        - `chatRoom(id: ID!)`: Return a specific chatRoom
        
        ### Mutations
        
        - `chatRoomCreate(profileId: ID!, participants: [ID!]!)`: Create a chatRoom with your profile and multiple participants
        - `chatRoomSendMessage(roomId: ID!, profileId: ID!, content: String!, inReplyToId: ID)`: Send a message in a room, using a specific profile. Optionally, you can reply to a message by passing the `inReplyToId` argument.
        - `chatRoomReadMessages(roomId: ID!, profileId: ID!, messageIds: [ID])`: Mark messages in a room as read by a specific profile, if `messageIds` is not passed, all messages will be marked as read.
        
        ### Subscriptions
        
        - `chatRoomOnRoomUpdate(profileId: ID!)`: Subscribe to chat rooms updates under your current profile
        - `chatRoomOnMessagesCountUpdate(profileId: ID!)`: Subscribe to unread/read messages count updates under your current profile
        - `chatRoomOnNewMessage(roomId: ID!)`: Subscribe to new messages in a specific room
        
        ## How to develop
        
        Clone the project inside your project's backend dir:
        
        ```
        git clone git@github.com:silverlogic/baseapp-backend.git
        ```
        
        And manually install the package:
        
        ```
        pip install -e baseapp-backend/baseapp-chats
        ```
        
        The `-e` flag will make it like any change you make in the cloned repo files will effect into the project.
Platform: UNKNOWN
Requires-Python: >=3.8
Description-Content-Type: text/markdown
