Skip to content

Commit 3b8d2bd

Browse files
authored
@azure/communication-common - PhoneNumberIdentifier serialization (Azure#23264)
* removed adding/stripping of "+" in phone numbers
1 parent eef29e1 commit 3b8d2bd

File tree

4 files changed

+55
-9
lines changed

4 files changed

+55
-9
lines changed

sdk/communication/communication-common/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
### Bugs Fixed
1010

11+
- Fixed the logic of `getIdentifierRawId` and `createIdentifierFromRawId` for `PhoneNumberIdentifier` to always maintain the original phone number string whether it included the leading `+` sign or not.
12+
1113
### Other Changes
1214

1315
- Updated to `@azure/core-tracing` 1.0.

sdk/communication/communication-common/src/identifierModels.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,7 @@ export const getIdentifierRawId = (identifier: CommunicationIdentifier): string
209209
case "phoneNumber": {
210210
const { phoneNumber, rawId } = identifierKind;
211211
if (rawId) return rawId;
212-
// strip the leading +. We just assume correct E.164 format here because validation should only happen server-side, not client-side.
213-
return `4:${phoneNumber.replace(/^\+/, "")}`;
212+
return `4:${phoneNumber}`;
214213
}
215214
case "unknown": {
216215
return identifierKind.id;
@@ -225,7 +224,7 @@ export const getIdentifierRawId = (identifier: CommunicationIdentifier): string
225224
*/
226225
export const createIdentifierFromRawId = (rawId: string): CommunicationIdentifierKind => {
227226
if (rawId.startsWith("4:")) {
228-
return { kind: "phoneNumber", phoneNumber: `+${rawId.substring("4:".length)}` };
227+
return { kind: "phoneNumber", phoneNumber: `${rawId.substring("4:".length)}` };
229228
}
230229

231230
const segments = rawId.split(":");

sdk/communication/communication-common/test/identifierModelSerializer.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ describe("Identifier model serializer", () => {
120120
assertSerialize(
121121
{ phoneNumber: "+12345556789" },
122122
{
123-
rawId: "4:12345556789",
123+
rawId: "4:+12345556789",
124124
phoneNumber: {
125125
value: "+12345556789",
126126
},

sdk/communication/communication-common/test/identifierModels.spec.ts

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,41 @@ describe("Identifier models", () => {
108108
{
109109
phoneNumber: "+112345556789",
110110
},
111+
"4:+112345556789"
112+
);
113+
assertRawId(
114+
{
115+
phoneNumber: "112345556789",
116+
},
111117
"4:112345556789"
112118
);
113119
assertRawId(
114120
{
115121
phoneNumber: "+112345556789",
116-
rawId: "4:otherFormat",
122+
rawId: "4:112345556789",
123+
},
124+
"4:112345556789"
125+
);
126+
assertRawId(
127+
{
128+
phoneNumber: "otherFormat",
129+
rawId: "4:207ffef6-9444-41fb-92ab-20eacaae2768",
130+
},
131+
"4:207ffef6-9444-41fb-92ab-20eacaae2768"
132+
);
133+
assertRawId(
134+
{
135+
phoneNumber: "otherFormat",
136+
rawId: "4:207ffef6-9444-41fb-92ab-20eacaae2768_207ffef6-9444-41fb-92ab-20eacaae2768",
117137
},
118-
"4:otherFormat"
138+
"4:207ffef6-9444-41fb-92ab-20eacaae2768_207ffef6-9444-41fb-92ab-20eacaae2768"
139+
);
140+
assertRawId(
141+
{
142+
phoneNumber: "otherFormat",
143+
rawId: "4:+112345556789_207ffef6-9444-41fb-92ab-20eacaae2768",
144+
},
145+
"4:+112345556789_207ffef6-9444-41fb-92ab-20eacaae2768"
119146
);
120147
assertRawId(
121148
{
@@ -201,11 +228,26 @@ describe("Identifier models", () => {
201228
kind: "microsoftTeamsUser",
202229
});
203230
assertIdentifier("4:112345556789", {
231+
phoneNumber: "112345556789",
232+
kind: "phoneNumber",
233+
});
234+
assertIdentifier("4:+112345556789", {
204235
phoneNumber: "+112345556789",
205236
kind: "phoneNumber",
206237
});
207-
assertIdentifier("4:otherFormat", {
208-
phoneNumber: "+otherFormat",
238+
assertIdentifier("4:207ffef6-9444-41fb-92ab-20eacaae2768", {
239+
phoneNumber: "207ffef6-9444-41fb-92ab-20eacaae2768",
240+
kind: "phoneNumber",
241+
});
242+
assertIdentifier(
243+
"4:207ffef6-9444-41fb-92ab-20eacaae2768_207ffef6-9444-41fb-92ab-20eacaae2768",
244+
{
245+
phoneNumber: "207ffef6-9444-41fb-92ab-20eacaae2768_207ffef6-9444-41fb-92ab-20eacaae2768",
246+
kind: "phoneNumber",
247+
}
248+
);
249+
assertIdentifier("4:+112345556789_207ffef6-9444-41fb-92ab-20eacaae2768", {
250+
phoneNumber: "+112345556789_207ffef6-9444-41fb-92ab-20eacaae2768",
209251
kind: "phoneNumber",
210252
});
211253
assertIdentifier("28:45ab2481-1c1c-4005-be24-0ffb879b1130", {
@@ -243,7 +285,10 @@ describe("Identifier models", () => {
243285
assertRoundtrip("8:teamsvisitor:45ab2481-1c1c-4005-be24-0ffb879b1130");
244286
assertRoundtrip("8:orgid:legacyFormat");
245287
assertRoundtrip("4:112345556789");
246-
assertRoundtrip("4:otherFormat");
288+
assertRoundtrip("4:+112345556789");
289+
assertRoundtrip("4:207ffef6-9444-41fb-92ab-20eacaae2768");
290+
assertRoundtrip("4:207ffef6-9444-41fb-92ab-20eacaae2768_207ffef6-9444-41fb-92ab-20eacaae2768");
291+
assertRoundtrip("4:+112345556789_207ffef6-9444-41fb-92ab-20eacaae2768");
247292
assertRoundtrip("28:45ab2481-1c1c-4005-be24-0ffb879b1130");
248293
assertRoundtrip("");
249294
});

0 commit comments

Comments
 (0)