@glissandoo/lib 1.77.0 → 1.79.0

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.
@@ -1,12 +1,13 @@
1
+ import { VoteValue } from '../models/Group/Repertory/types';
1
2
  export declare const rateSteps: {
2
- id: string;
3
+ id: 'love' | 'like' | 'neutral' | 'dislike';
3
4
  emoji: string;
4
- value: number;
5
- range: number[];
5
+ value: VoteValue;
6
+ range: [number, number];
6
7
  }[];
7
8
  export declare const getStepRating: (rating: number) => {
8
- id: string;
9
+ id: 'love' | 'like' | 'neutral' | 'dislike';
9
10
  emoji: string;
10
- value: number;
11
- range: number[];
11
+ value: VoteValue;
12
+ range: [number, number];
12
13
  } | undefined;
@@ -30,9 +30,10 @@ export default class GroupRepertory extends Theme<GroupRepertoryData> {
30
30
  /** @deprecated use sections */
31
31
  get mainFilePath(): string | null;
32
32
  get visibility(): GroupRepertoireVisibility;
33
- get votes(): Record<string, number>;
33
+ get votes(): Record<string, import("./types").VoteValue>;
34
34
  get votesCount(): number;
35
- voteByUserId(userId: string): number | null;
35
+ get votesCountByValues(): Record<"love" | "like" | "neutral" | "dislike", number>;
36
+ voteByUserId(userId: string): import("./types").VoteValue;
36
37
  get rating(): number;
37
38
  get events(): string[];
38
39
  get eventsTL(): Record<string, import("../../Evento/types").EventTinyData>;
@@ -15,6 +15,7 @@ const tiny_1 = __importDefault(require("../../Evento/tiny"));
15
15
  const basic_1 = __importDefault(require("../../Repertory/basic"));
16
16
  const types_1 = require("./File/Section/types");
17
17
  const types_2 = require("./types");
18
+ const rates_1 = require("../../../helpers/rates");
18
19
  class GroupRepertory extends basic_1.default {
19
20
  constructor(doc, lang = lang_1.defaultLocale) {
20
21
  super(doc);
@@ -65,14 +66,17 @@ class GroupRepertory extends basic_1.default {
65
66
  get votesCount() {
66
67
  return Object.keys(this.votes).length;
67
68
  }
69
+ get votesCountByValues() {
70
+ const existingCounts = (0, lodash_1.countBy)(Object.values(this.votes));
71
+ const allCountsEntries = rates_1.rateSteps.map(({ id, value }) => [id, existingCounts[`${value}`] || 0]);
72
+ return Object.fromEntries(allCountsEntries);
73
+ }
68
74
  voteByUserId(userId) {
69
75
  return this.votes[userId] || null;
70
76
  }
71
77
  get rating() {
72
- const totalVotes = Object.entries(this.votes).reduce((acc, [, value]) => acc + value, 0);
73
- if (this.votesCount === 0 || totalVotes === 0)
74
- return 0;
75
- return Math.round((totalVotes / this.votesCount) * 100) / 100;
78
+ const totalVotes = (0, lodash_1.sum)(Object.values(this.votes));
79
+ return totalVotes == 0 ? 0 : Math.round((totalVotes / this.votesCount) * 100) / 100;
76
80
  }
77
81
  get events() {
78
82
  return this.data.events || [];
@@ -55,6 +55,7 @@ export interface GroupRepertoireFilePathItem {
55
55
  path: string;
56
56
  tag: string;
57
57
  }
58
+ export type VoteValue = 1 | 2 | 3 | 4;
58
59
  export interface GroupRepertoryData extends ThemeBasicData {
59
60
  events: string[];
60
61
  eventsTL: Record<string, EventTinyData>;
@@ -71,7 +72,7 @@ export interface GroupRepertoryData extends ThemeBasicData {
71
72
  identifyAt: Timestamp | null;
72
73
  files: Record<FileId, GroupRepertoireFile>;
73
74
  filesPath: Partial<Record<FileSectionId, GroupRepertoireFilePathItem[]>>;
74
- votes: Record<string, number>;
75
+ votes: Record<string, VoteValue>;
75
76
  thumbnailURL: string | null;
76
77
  editedAt: Timestamp | null;
77
78
  visibility: GroupRepertoireVisibility;
@@ -44,6 +44,7 @@ export default class Group extends GroupBasic<GroupData> {
44
44
  getSocialNetworkUrl(id: SocialNetwork): string | null;
45
45
  get config(): {
46
46
  includesMembersToEventsWhenJoined: boolean;
47
+ allowEditInstruments: boolean;
47
48
  showAttendanceToMembers: GroupConfigShowAttendanceToMembers;
48
49
  };
49
50
  get configSites(): {
@@ -65,6 +66,7 @@ export default class Group extends GroupBasic<GroupData> {
65
66
  getPlayer: (userId: string) => import("../Player/types").PlayerBasicData | null;
66
67
  isAdmin: (userId: string) => boolean;
67
68
  isPlayer: (userId: string) => boolean;
69
+ /** @deprecated use isUpgradeRequired */
68
70
  get isExpiredTrial(): boolean;
69
71
  get isOutOfMembersLimit(): boolean;
70
72
  get isUpgradePlanRequired(): boolean;
@@ -137,6 +137,9 @@ class Group extends basic_1.default {
137
137
  [types_1.GroupConfigKey.IncludesMembersToEventsWhenJoined]: types_1.GroupConfigKey.IncludesMembersToEventsWhenJoined in this.data.config
138
138
  ? this.data.config[types_1.GroupConfigKey.IncludesMembersToEventsWhenJoined]
139
139
  : true,
140
+ [types_1.GroupConfigKey.AllowEditInstruments]: types_1.GroupConfigKey.AllowEditInstruments in this.data.config
141
+ ? this.data.config[types_1.GroupConfigKey.AllowEditInstruments]
142
+ : true,
140
143
  [types_1.GroupConfigKey.ShowAttendanceToMembers]: types_1.GroupConfigKey.ShowAttendanceToMembers in this.data.config
141
144
  ? this.data.config[types_1.GroupConfigKey.ShowAttendanceToMembers]
142
145
  : types_1.GroupConfigShowAttendanceToMembers.None,
@@ -173,6 +176,7 @@ class Group extends basic_1.default {
173
176
  get metadata() {
174
177
  return this.data.metadata || {};
175
178
  }
179
+ /** @deprecated use isUpgradeRequired */
176
180
  get isExpiredTrial() {
177
181
  const isOutDateTrial = (0, date_fns_1.isPast)(this.trialEndAt);
178
182
  const members = this.activePlayers.length;
@@ -17,6 +17,7 @@ export declare enum GroupCreatedOn {
17
17
  }
18
18
  export declare enum GroupConfigKey {
19
19
  IncludesMembersToEventsWhenJoined = "includesMembersToEventsWhenJoined",
20
+ AllowEditInstruments = "allowEditInstruments",
20
21
  ShowAttendanceToMembers = "showAttendanceToMembers"
21
22
  }
22
23
  export declare enum GroupConfigSitesKey {
@@ -103,6 +104,7 @@ export declare enum GroupRepertoireTagDefault {
103
104
  }
104
105
  export interface GroupConfig {
105
106
  [GroupConfigKey.IncludesMembersToEventsWhenJoined]: boolean;
107
+ [GroupConfigKey.AllowEditInstruments]: boolean;
106
108
  [GroupConfigKey.ShowAttendanceToMembers]: GroupConfigShowAttendanceToMembers;
107
109
  }
108
110
  export interface GroupConfigSites {
@@ -10,6 +10,7 @@ var GroupCreatedOn;
10
10
  var GroupConfigKey;
11
11
  (function (GroupConfigKey) {
12
12
  GroupConfigKey["IncludesMembersToEventsWhenJoined"] = "includesMembersToEventsWhenJoined";
13
+ GroupConfigKey["AllowEditInstruments"] = "allowEditInstruments";
13
14
  GroupConfigKey["ShowAttendanceToMembers"] = "showAttendanceToMembers";
14
15
  })(GroupConfigKey = exports.GroupConfigKey || (exports.GroupConfigKey = {}));
15
16
  var GroupConfigSitesKey;
@@ -63,4 +63,5 @@ export default class User extends UserBasic<UserData> {
63
63
  get devicesList(): (import("./types").UserDeviceInfo & {
64
64
  id: string;
65
65
  })[];
66
+ get analyticsEnabled(): true;
66
67
  }
@@ -166,5 +166,8 @@ class User extends basic_1.default {
166
166
  get devicesList() {
167
167
  return (0, objects_1.mapToArray)(this.devices);
168
168
  }
169
+ get analyticsEnabled() {
170
+ return this.data.analyticsEnabled || true;
171
+ }
169
172
  }
170
173
  exports.default = User;
@@ -89,6 +89,7 @@ export interface UserData extends UserBasicData {
89
89
  [UserAppConfig.DefaultGroupId]: string | null;
90
90
  [UserAppConfig.DefaultEventsFilter]: UserEventsFilter;
91
91
  };
92
+ analyticsEnabled: boolean;
92
93
  registerVia: UserRegisterVia;
93
94
  lastAppLoginAt: Timestamp | null;
94
95
  lastWebLoginAt: Timestamp | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glissandoo/lib",
3
- "version": "1.77.0",
3
+ "version": "1.79.0",
4
4
  "description": "Glissandoo library js",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",