1.9.174 • Published 6 months ago

@codelic/chat-components v1.9.174

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

Name

@codelic/chat-components(CodelicMagneterChat)

Overview

fairebase,magnetarと併用を想定したチャットコンポーネントです。 動的なチャット機能をサポートします. 下記の二種類準備しています。

チャット(QAモード搭載)

シンプルなチャットモードです。 QAモードに切り替えを行うことで作成された質問の制御を行います。

ルーム選択可能チャット

ルームの選択を含めたチャットです。1コンポーネントで構成されているため1ページ完結型です。

Description

会社毎のチャット作成例 高さ幅ともにwrapして使用してください。 GIF Alt Text

◼︎共通prosp(CMCRoom,CMCSelectRooms) ・magnetarInstance magnetarのインスタンス

type: Object as PropType<MagnetarInstance>,

・userData 本人の情報

type: Object as PropType<UserData>,

・firstModelSpinner 初回スピナ-を使用するかどうか

type: Boolean,

・firstLoadingCount 初回読み込みを最初に何件するか

type: Boolean,

・firstLoadingCount ・メッセージの初回読み込み数

type: Number,

・addLoadingCount メッセージの追加読み込み数

type: Number,

・authCounterUp 個人の判定をする際にAuthの文字数と同一かどうかを判断 ※今後仕様を変更予定

type: Number,

・authCounterDown 個人の判定をする際にAuthの文字数と同一かどうかを判断 ※今後仕様を変更予定

type: Number,

◼︎CMCRoom ・destinationIinformation 送信先情報

type: Object as PropType<Group[] | Independent>,

・chatRoomId 固定したチャットルームが存在している場合そのIDを渡す。 もしない場合は、送信者の情報を元に自動生成を行う。

type: String,

・header ヘッダーの有無 簡易CSSでデザインを変更してください。

 type: Object as PropType<{ [key: string]: string }>,

・headerImg headerのイメージアイコン

  type: String,

・title チャットルームが作成された時のタイトル

  type: String,

・height 全体の高さ(アプリ想定のためdefaultで100Vh)

  type: String,

・qAModeOptions QAモードを仕様する場合に必要なOP

{
  /** 最後の質問があるか */
  lastQuestion: boolean
  /** 現在のモード */
  isQAMode: boolean
  /** 対象の質問 */
  question: ChatRoomsMessages
  /** 対象の回答 */
  answer: ChatRoomsMessages
  /** 削除の状態
   * - 一個戻る場合の削除 'back'
   * - 全て削除する場合の削除 'all'
   * - 何もない場合 ''
   */
  deleteFlag: 'back' | 'all' | ''
}

◼︎CMCSelectRooms prosp

・deleteColor 削除ボタンの色

type: Strign,

・isAutoCreate アカウントの自動登録 ・現在は追加された【destinationIinformation】 【userData】を元にCMCのDB情報を生成する

type: Strign,
import {
  CMCSelectRooms,
} from '@codelic/chat-components'
  <div style="height: 100vh">
    <CMCRoom
      :key="chatRoomId"
      :magnetarInstance="magnetar"
      :dbFirebaseStorage="storage"
      :chatRoomId="chatRoomId"
      :sender="userId"
    />
  </div>

ルーム選択+ルーム作成機能()

const createDbChatRoom = async (
  selectData: {
    id: string
    name: string
  }[]

) => {
  try {
    //選択したグループをidを格納した配列に変換
    const selectedGroupIds = selectData.map((d) => d.id)
    // 選択したindexグループを取得
    // TODO:ここでグループじゃない場合の対応をしなければならない
    const selectedGroups = indexCompany.value.filter((group) =>
      selectedGroupIds.includes(group.id)
    )
    // 配列の[]だけ削除
    const titleCreate = (target: string) =>
      target.replace(/]/g, '').replace(/\[/g, '')
    const titleGroup = selectedGroups.map((user) => user.name).toLocaleString()
    const res = await openRoomCreateGroups(
      magnetar,
      titleCreate(titleGroup),
      window.userId,
      selectedGroups
    )
    if (res === 'success') {
      isClick.value = !isClick.value
    }
  } catch (error) {
    console.error(error)
  }
}
const indexCompany = ref<Group[]>([
  {
    kind: 'group',
    id: 'test_company1',
    name: 'テスト株式会社1',
    memberIds: [
      { id: 'test1', name: 'テスト太郎' },
      { id: 'test2', name: 'テスト二郎' },
      { id: 'test3', name: 'テスト三郎' },
    ],
  },
  {
    kind: 'group',
    id: 'test_company2',
    name: 'テスト株式会社2',
    memberIds: [
      { id: 'test4', name: 'テスター4' },
      { id: 'test5', name: 'テスター5' },
      { id: 'test6', name: 'テスター6' },
      { id: 'test7', name: 'テスター7' },
    ],
  },
])
<button class="test" @click="isClick = !isClick">{{ '新規作成' }}</button>
<div style="height: 50vh; width: 100vw; overflow: scroll">
  <CMCSelectRooms
    :magnetar-instance="magnetar"
    :dbFirebaseStorage="storage"
    :userData="userData"
    :groupData="companyData"
    deleteColor="#3CD291"
  />
</div>
<div v-if="isClick">
  <button @click="createDbChatRoom(selectUsersData)" class="test">
    {{ 'トークルーム追加' }}
  </button>
  <CMCSelectUser
    :selectedOption="indexCompany"
    v-model:modelValue="selectUsersData"
    :isMulch="false"
    selectColor="#3CD291"
  ></CMCSelectUser>
</div>

ルーム選択+ルーム作成機能(User情報)

const indexUser =
  ref <
  Independent >
  {
    kind: 'independent',
    memberIds: [
      { id: 'test1', name: 'テスト太郎' },
      { id: 'test2', name: 'テスト二郎' },
      { id: 'test3', name: 'テスト三郎' },
    ],
  }

DB

autoCreate
[User]:{id:string,name:string}
commonField:createdAt: Date
           :updatedAt: Date
           :createdBy: Date
           :updatedBy: Date
+-------------------------------------------+ +----------------------------------+
| ChatUser                                  | | ChatRoomsOverview                |
+-------------------------------------------+ +----------------------------------+
| namae: string                             | | unreadMessageDic:                |
| isPublic: boolean                         | | {                                |
| avatarUrl: string                         | |     [room:id]:                   |
| permission: enum                          | |         {                        |
| notificationSetting: Map<string, boolean> | |         unreadCount:number       |
| payload: payload: Map<string, boolean>     | |         roomId:string            |
+-------------------------------------------+ |         title:string             |
                                              |         lastMessageAt:Timestamp  |
                                              |         iconColor:string         |
                                              |         iconUrl:string           |
                                              |         }                        |
                                              | }                                |
                                              +----------------------------------+
+-------------------+
|   UserGroups      |
+-------------------+
| id: string        |
| name: string      |
| members: [User]   |
+-------------------+

+-------------------------+
| ChatRooms               |
+-------------------------+
| id: string              |
| name: string            |
| isReadFunction: boolean |
| isReadFunction: boolean |
| members: [User]         |
+-------------------------+
         |
         |
         v
 +---------------------------------------------+
 | ChatRoom/{roomId}/                          |
 |  messages                                   |
 +---------------------------------------------+
 | chatMessages: string                        |
 | body: string                                |
 | fileSrc: string                             |
 | fileType: string                            |
 | user: string                                |
 | replyId: string                             |
 | mentionIds: string[]                        |
 | hidden: boolean                             |
 | editHistory: string[]                       |
 | selecterId: string                          |
 | userSelectedId: string                      |
 | replyRequiredDataType: ’’ |’file’ | ‘text’  |
 | [key: string]: any                          |
 +---------------------------------------------+

 +-----------------------------------------+
 | InquiryQuestion                           |
 +-----------------------------------------+
 | selectedChoice: Map<string, choiceData> |
 | body: string                            |
 | isRoot: boolean                         |
 | isGoal: boolean                         |
 | answerId: string                        |
 +-----------------------------------------+

+-------------------+
|     MAnswer       |
+-------------------+
| id: string        |
| answer: string    |
| path: string      |
+-------------------+

DEMO

Requirement

  • magnetar ^0.13.4
  • @codelic/datagen: ^1.0.7
  • firebase: ^10.1.0
  • @magnetarjs/core: ^0.16.3,
  • @magnetarjs/plugin-firestore: ^0.16.3,
  • @magnetarjs/plugin-vue3: ^0.16.3
  • vue: ^3.3.4

Installation

magnetar 0.13.4 以降推奨

npm i magnetar

firebase 9.20.0 以上推奨

npm install firebase

Usage

npm install @codelic/chat-component

修正等

git clone https://github.com/chat-component/~

Note

・magnetar 0.13.4 以降のバージョンのみ対応 ・streage についてdifinExposeで使用先から渡してください。 ・DBに記載されているコレクション自動生成されます。 ※User,Room,OverView ①ユーザーの初回コンポーネントが呼び出された時 ②ユーザーが任意にRoomを作成した場合 ※Message ①自身がチャットを送信した時 ②チャット相手がチャットを送信した場合

Author

Code-Daiki2170

License

chat-component is Confidential.

1.9.133-beta.4

9 months ago

1.9.133-beta.1

10 months ago

1.9.133-beta.0

10 months ago

1.9.133-beta.3

9 months ago

1.9.133-beta.2

10 months ago

1.9.100

1 year ago

1.9.121

1 year ago

1.9.122

1 year ago

1.9.118

1 year ago

1.9.119

1 year ago

1.9.116

1 year ago

1.9.117

1 year ago

1.9.114

1 year ago

1.9.115

1 year ago

1.9.112

1 year ago

1.9.113

1 year ago

1.9.110

1 year ago

1.9.111

1 year ago

1.9.107

1 year ago

1.9.108

1 year ago

1.9.105

1 year ago

1.9.106

1 year ago

1.9.103

1 year ago

1.9.104

1 year ago

1.9.101

1 year ago

1.9.102

1 year ago

1.9.109

1 year ago

1.9.143

8 months ago

1.9.144

8 months ago

1.9.141

9 months ago

1.9.142

9 months ago

1.9.140

9 months ago

1.9.138

9 months ago

1.9.139

9 months ago

1.9.136

9 months ago

1.9.137

9 months ago

1.9.134

9 months ago

1.9.135

9 months ago

1.9.132

10 months ago

1.9.133

9 months ago

1.9.130

11 months ago

1.9.131

10 months ago

1.9.99

1 year ago

1.9.98

1 year ago

1.9.129

11 months ago

1.9.127

1 year ago

1.9.128

11 months ago

1.9.125

1 year ago

1.9.126

1 year ago

1.9.123

1 year ago

1.9.124

1 year ago

1.9.165

7 months ago

1.9.166

7 months ago

1.9.163

7 months ago

1.9.164

7 months ago

1.9.162

7 months ago

1.9.160

7 months ago

1.9.158

7 months ago

1.9.159

7 months ago

1.9.156

7 months ago

1.9.157

7 months ago

1.9.155

7 months ago

1.9.152

8 months ago

1.9.153

8 months ago

1.9.150

8 months ago

1.9.151

8 months ago

1.9.149

8 months ago

1.9.147

8 months ago

1.9.148

8 months ago

1.9.145

8 months ago

1.9.146

8 months ago

1.9.174

6 months ago

1.9.172

6 months ago

1.9.173

6 months ago

1.9.170

6 months ago

1.9.171

6 months ago

1.9.169

7 months ago

1.9.167

7 months ago

1.9.168

7 months ago

1.9.97

1 year ago

1.9.96

1 year ago

1.9.95

1 year ago

1.9.94

1 year ago

1.9.93

1 year ago

1.9.92

1 year ago

1.9.91

1 year ago

1.9.9

1 year ago

1.9.8

1 year ago

1.9.7

1 year ago

1.9.1

1 year ago

1.9.0

1 year ago

1.9.6

1 year ago

1.9.5

1 year ago

1.9.4

1 year ago

1.9.3

1 year ago

1.9.2

1 year ago

1.8.2-alpha1

1 year ago

1.7.90

1 year ago

1.7.91

1 year ago

1.7.92

1 year ago

1.7.93

1 year ago

1.7.94

1 year ago

1.7.95

1 year ago

1.7.96

1 year ago

1.7.97

1 year ago

1.7.98

1 year ago

1.7.99

1 year ago

1.7.76

2 years ago

1.7.77

1 year ago

1.7.78

1 year ago

1.7.79

1 year ago

1.7.80

1 year ago

1.7.81

1 year ago

1.7.82

1 year ago

1.7.83

1 year ago

1.7.84

1 year ago

1.7.85

1 year ago

1.7.86

1 year ago

1.7.87

1 year ago

1.7.88

1 year ago

1.7.89

1 year ago

1.8.2

1 year ago

1.8.1

1 year ago

1.8.0

1 year ago

1.8.2-alpha1.2

1 year ago

1.8.2-alpha1.1

1 year ago

1.8.2-alpha1.4

1 year ago

1.8.2-alpha1.3

1 year ago

1.8.2-alpha1.0

1 year ago

1.8.2-alpha1.6

1 year ago

1.8.2-alpha1.5

1 year ago

1.8.9

1 year ago

1.8.8

1 year ago

1.8.7

1 year ago

1.8.6

1 year ago

1.8.5

1 year ago

1.8.4

1 year ago

1.8.3

1 year ago

1.7.74

2 years ago

1.7.75

2 years ago

1.7.72

2 years ago

1.7.73

2 years ago

1.7.71

2 years ago

1.7.70

2 years ago

1.7.69

2 years ago

1.7.58

2 years ago

1.7.59

2 years ago

1.7.60

2 years ago

1.7.61

2 years ago

1.7.62

2 years ago

1.7.63

2 years ago

1.7.64

2 years ago

1.7.65

2 years ago

1.7.66

2 years ago

1.7.67

2 years ago

1.7.68

2 years ago

1.7.57

2 years ago

1.7.52

2 years ago

1.7.53

2 years ago

1.7.54

2 years ago

1.7.55

2 years ago

1.7.56

2 years ago

1.7.50

2 years ago

1.7.51

2 years ago

1.7.35

2 years ago

1.7.36

2 years ago

1.7.37

2 years ago

1.7.38

2 years ago

1.7.39

2 years ago

1.7.40

2 years ago

1.7.42

2 years ago

1.7.43

2 years ago

1.7.44

2 years ago

1.7.45

2 years ago

1.7.46

2 years ago

1.7.47

2 years ago

1.7.48

2 years ago

1.7.49

2 years ago

1.7.34

2 years ago

1.7.28

2 years ago

1.7.29

2 years ago

1.7.30

2 years ago

1.7.31

2 years ago

1.7.32

2 years ago

1.7.33

2 years ago

1.7.27

2 years ago

1.7.23

2 years ago

1.7.24

2 years ago

1.7.25

2 years ago

1.7.26

2 years ago

1.7.20

2 years ago

1.7.21

2 years ago

1.7.22

2 years ago

1.7.19

2 years ago

1.7.16

2 years ago

1.7.17

2 years ago

1.7.18

2 years ago

1.7.14

2 years ago

1.7.15

2 years ago

1.7.12

2 years ago

1.7.13

2 years ago

1.7.11

2 years ago

1.7.10

2 years ago

1.7.9

2 years ago

1.7.8

2 years ago

1.7.7

2 years ago

1.7.6

2 years ago

1.7.5

2 years ago

1.7.4

2 years ago

1.7.3

2 years ago

1.7.2

2 years ago

1.7.1

2 years ago

1.7.0

2 years ago

1.6.9

2 years ago

1.6.4

2 years ago

1.6.3

2 years ago

1.6.8

2 years ago

1.6.7

2 years ago

1.6.6

2 years ago

1.6.5

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.5.9

2 years ago

1.5.8

2 years ago

1.5.7

2 years ago

1.5.6

2 years ago

1.5.5

2 years ago

1.5.4

2 years ago

1.5.3

2 years ago

1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.4.9

2 years ago

1.4.8

2 years ago

1.4.7

2 years ago

1.4.6

2 years ago

1.2.8

2 years ago

1.4.5

2 years ago

1.2.7

2 years ago

1.4.4

2 years ago

1.2.6

2 years ago

1.4.3

2 years ago

1.2.5

2 years ago

1.4.2

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.9

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.6

2 years ago

1.0.5-Beta2

2 years ago

1.0.5-Beta1

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.1

2 years ago

1.0.2

2 years ago

0.0.0

2 years ago

1.0.0

2 years ago