@wireapp/core 30.0.1 → 30.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [30.0.2](https://github.com/wireapp/wire-web-packages/tree/main/packages/core/compare/@wireapp/core@30.0.1...@wireapp/core@30.0.2) (2022-08-30)
7
+
8
+ **Note:** Version bump only for package @wireapp/core
9
+
10
+
11
+
12
+
13
+
6
14
  ## [30.0.1](https://github.com/wireapp/wire-web-packages/tree/main/packages/core/compare/@wireapp/core@30.0.0...@wireapp/core@30.0.1) (2022-08-29)
7
15
 
8
16
  **Note:** Version bump only for package @wireapp/core
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "@otak/core-crypto": "0.3.0-es2017",
8
8
  "@types/long": "4.0.1",
9
9
  "@types/node": "~14",
10
- "@wireapp/api-client": "20.0.1",
10
+ "@wireapp/api-client": "20.0.2",
11
11
  "@wireapp/commons": "4.3.0",
12
12
  "@wireapp/cryptobox": "12.8.0",
13
13
  "@wireapp/store-engine-dexie": "1.6.10",
@@ -77,6 +77,6 @@
77
77
  "test:node": "nyc jasmine --config=jasmine.json",
78
78
  "watch": "tsc ---watch"
79
79
  },
80
- "version": "30.0.1",
81
- "gitHead": "5cdbd6fd089dd82b5df42480a967a6044b673951"
80
+ "version": "30.0.2",
81
+ "gitHead": "5102f8e16b94e21eed48c1a8efdc84cc479fe0d7"
82
82
  }
@@ -241,7 +241,7 @@ class Account extends events_1.EventEmitter {
241
241
  const selfService = new self_1.SelfService(this.apiClient);
242
242
  const teamService = new team_1.TeamService(this.apiClient);
243
243
  const broadcastService = new broadcast_1.BroadcastService(this.apiClient, cryptographyService);
244
- const userService = new user_1.UserService(this.apiClient);
244
+ const userService = new user_1.UserService(this.apiClient, broadcastService, conversationService, connectionService);
245
245
  this.service = {
246
246
  account: accountService,
247
247
  asset: assetService,
@@ -4,7 +4,8 @@ import { QualifiedId } from '@wireapp/api-client/src/user';
4
4
  export declare class ConnectionService {
5
5
  private readonly apiClient;
6
6
  constructor(apiClient: APIClient);
7
- acceptConnection(userId: QualifiedId): Promise<Connection>;
8
- ignoreConnection(userId: QualifiedId): Promise<Connection>;
7
+ getConnections(): Promise<Connection[]>;
8
+ acceptConnection(userId: string): Promise<Connection>;
9
+ ignoreConnection(userId: string): Promise<Connection>;
9
10
  createConnection(userId: QualifiedId): Promise<Connection>;
10
11
  }
@@ -24,6 +24,9 @@ class ConnectionService {
24
24
  constructor(apiClient) {
25
25
  this.apiClient = apiClient;
26
26
  }
27
+ getConnections() {
28
+ return this.apiClient.api.connection.getAllConnections();
29
+ }
27
30
  acceptConnection(userId) {
28
31
  return this.apiClient.api.connection.putConnection(userId, {
29
32
  status: connection_1.ConnectionStatus.ACCEPTED,
@@ -35,7 +38,7 @@ class ConnectionService {
35
38
  });
36
39
  }
37
40
  createConnection(userId) {
38
- return this.apiClient.api.connection.postConnection(userId);
41
+ return this.apiClient.api.connection.postConnection(userId, '');
39
42
  }
40
43
  }
41
44
  exports.ConnectionService = ConnectionService;
@@ -1,8 +1,25 @@
1
1
  import type { APIClient } from '@wireapp/api-client';
2
2
  import type { QualifiedId, User } from '@wireapp/api-client/src/user/';
3
+ import type { AvailabilityType, BroadcastService } from '../broadcast/';
4
+ import { ConnectionService } from '../connection';
5
+ import { ConversationService } from '../conversation';
3
6
  export declare class UserService {
4
7
  private readonly apiClient;
5
- constructor(apiClient: APIClient);
8
+ private readonly broadcastService;
9
+ private readonly connectionService;
10
+ private readonly conversationService;
11
+ constructor(apiClient: APIClient, broadcastService: BroadcastService, conversationService: ConversationService, connectionService: ConnectionService);
6
12
  getUser(userId: string | QualifiedId): Promise<User>;
7
13
  getUsers(userIds: string[] | QualifiedId[]): Promise<User[]>;
14
+ /**
15
+ * Sends a availability update to members of the same team
16
+ * @param teamId
17
+ * @param type
18
+ * @param options.sendAll=false will broadcast the message to all the members of the team (instead of just direct connections). Should be avoided in a big team
19
+ * @param options.sendAsProtobuf=false
20
+ */
21
+ setAvailability(teamId: string, type: AvailabilityType, { sendAll, sendAsProtobuf }?: {
22
+ sendAll?: boolean | undefined;
23
+ sendAsProtobuf?: boolean | undefined;
24
+ }): Promise<void>;
8
25
  }
@@ -17,12 +17,21 @@
17
17
  * along with this program. If not, see http://www.gnu.org/licenses/.
18
18
  *
19
19
  */
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
20
23
  Object.defineProperty(exports, "__esModule", { value: true });
21
24
  exports.UserService = void 0;
25
+ const protocol_messaging_1 = require("@wireapp/protocol-messaging");
26
+ const uuidjs_1 = __importDefault(require("uuidjs"));
22
27
  const TypePredicateUtil_1 = require("../util/TypePredicateUtil");
28
+ const connection_1 = require("@wireapp/api-client/src/connection");
23
29
  class UserService {
24
- constructor(apiClient) {
30
+ constructor(apiClient, broadcastService, conversationService, connectionService) {
25
31
  this.apiClient = apiClient;
32
+ this.broadcastService = broadcastService;
33
+ this.connectionService = connectionService;
34
+ this.conversationService = conversationService;
26
35
  }
27
36
  getUser(userId) {
28
37
  return this.apiClient.api.user.getUser(userId);
@@ -35,6 +44,38 @@ class UserService {
35
44
  ? this.apiClient.api.user.postListUsers({ qualified_ids: userIds })
36
45
  : this.apiClient.api.user.getUsers({ ids: userIds });
37
46
  }
47
+ /**
48
+ * Sends a availability update to members of the same team
49
+ * @param teamId
50
+ * @param type
51
+ * @param options.sendAll=false will broadcast the message to all the members of the team (instead of just direct connections). Should be avoided in a big team
52
+ * @param options.sendAsProtobuf=false
53
+ */
54
+ async setAvailability(teamId, type, { sendAll = false, sendAsProtobuf = false } = {}) {
55
+ // Get pre-key bundles for members of your own team
56
+ const preKeyBundlesFromTeam = await this.broadcastService.getPreKeyBundlesFromTeam(teamId, false, !sendAll);
57
+ // Get pre-key bundles for all of your other 1:1 connections
58
+ const connections = await this.connectionService.getConnections();
59
+ const acceptedConnections = connections.filter(connection => connection.status === connection_1.ConnectionStatus.ACCEPTED);
60
+ const preKeyBundlePromises = acceptedConnections.map(connection => {
61
+ const mappedConnection = {
62
+ userId: connection.to,
63
+ conversationId: connection.conversation,
64
+ };
65
+ return this.conversationService.getPreKeyBundleMap(mappedConnection.conversationId, [mappedConnection.userId]);
66
+ });
67
+ const preKeyBundlesFromConnections = await Promise.all(preKeyBundlePromises);
68
+ // Merge pre-key bundles
69
+ const allPreKeyBundles = preKeyBundlesFromConnections.reduce((accumulator, preKeyBundleMap) => {
70
+ return Object.assign(Object.assign({}, accumulator), preKeyBundleMap);
71
+ }, preKeyBundlesFromTeam);
72
+ const genericMessage = protocol_messaging_1.GenericMessage.create({
73
+ availability: new protocol_messaging_1.Availability({ type }),
74
+ messageId: uuidjs_1.default.genV4().toString(),
75
+ });
76
+ // Broadcast availability status to your team members & external 1:1 connections
77
+ await this.broadcastService.broadcastGenericMessage(genericMessage, allPreKeyBundles, sendAsProtobuf);
78
+ }
38
79
  }
39
80
  exports.UserService = UserService;
40
81
  //# sourceMappingURL=UserService.js.map