Skip to content

Commit 6882e5c

Browse files
committed
Allow numbers without numbers
Numbers without numbers won't show up as vCards. Fix: "TypeError: Cannot read property 'trim' of undefined" for ```xml <telephony nid="1"> <number type="work" prio="1" id="0"></number> </telephony> ``` Resolves #139
1 parent aa7b027 commit 6882e5c

File tree

3 files changed

+249
-3
lines changed

3 files changed

+249
-3
lines changed

spec/fritz-phonebook.json

+245-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,245 @@
1-
{"phonebook":{"name":"Telefonbuch","owner":"0","contact":[{"category":"0","person":{"realName":"Test GmbH"},"telephony":{"nid":"2","number":[{"type":"work","prio":"1","id":"0","_Data":"01234 567890"},{"type":"fax_work","prio":"0","id":"1","_Data":"(01234) 56789-2"}]},"services":{"nid":"1","email":{"classifier":"private","id":"0","_Data":"[email protected]"}},"setup":"","features":{"doorphone":"0"},"mod_time":"1476188984","uniqueid":"2"},{"category":"","person":{"realName":"Guter Nachbar"},"telephony":{"nid":"1","number":{"type":"home","vanity":"","prio":"1","id":"0","_Data":"23456"}},"services":"","setup":{"ringTone":""},"mod_time":"1478438296","uniqueid":"1"},{"category":"0","person":{"realName":"Arzt, Very long name because it consists of Praxis and two names."},"telephony":{"nid":"1","number":{"type":"work","prio":"1","id":"0","_Data":"012345 34567890"}},"services":"","setup":"","features":{"doorphone":"0"},"mod_time":"1532104029","uniqueid":"3"},{"category":"","person":{"realName":"AVM Ansage (HD)"},"telephony":{"nid":"1","number":{"prio":"1","type":"work","quickdial":"65","id":"0","_Data":"[email protected]"}},"services":"","setup":"","uniqueid":"5"},{"category":"0","person":{"realName":"Apostrophe' and german umlauts like ö and ü and ä - ß","imageURL":"file:///var/InternerSpeicher/FRITZ/fonpix/2245353675-0.jpg"},"telephony":{"nid":"1","number":{"type":"work","prio":"1","id":"0","_Data":"098765 54321"}},"services":"","setup":"","mod_time":"1524933691","uniqueid":"4","features":{"doorphone":"0"}},{"category":"0","person":{"realName":"Multiple work phone numbers"},"telephony":{"nid":"2","number":[{"type":"work","prio":"1","id":"0","_Data":"3333333 33332"},{"type":"work","prio":"0","id":"1","_Data":"(3333333) 33332-1"}]},"services":"","setup":"","features":{"doorphone":"0"},"mod_time":"1532104412","uniqueid":"6"},{"category":"0","person":{"realName":"An internation company","imageURL":"file:///var/InternerSpeicher/FRITZ/fonpix/281288883304-0.jpg"},"telephony":{"nid":"1","number":{"type":"work","prio":"1","id":"0","_Data":"0047-0123456780"}},"services":{"nid":"1","email":{"classifier":"private","id":"0","_Data":"[email protected]"}},"setup":"","features":{"doorphone":"0"},"mod_time":"1524932919","uniqueid":"7"},{"category":"1","person":{"realName":"Cellphone, Mr. Mobile"},"telephony":{"nid":"2","number":[{"type":"home","prio":"1","id":"0","_Data":"04567-98765"},{"type":"mobile","prio":"0","id":"1","_Data":"017700000001"}]},"services":"","setup":"","uniqueid":"8","features":{"doorphone":"0"},"mod_time":"1524932760"},{"category":"0","person":{"realName":"No telephony"},"services":{"nid":"1","email":{"classifier":"private","id":"0","_Data":"[email protected]"}},"setup":"","features":{"doorphone":"0"},"mod_time":"1515444645","uniqueid":"9"},{"category":"0","person":{"realName":"Wecker 1"},"telephony":{"services": "","number":{"type":"","quickdial":"","vanity":"","prio":"1","_Data":"**41"}}}]}}
1+
{
2+
"phonebook": {
3+
"name": "Telefonbuch",
4+
"owner": "0",
5+
"contact": [{
6+
"category": "0",
7+
"person": {
8+
"realName": "Test GmbH"
9+
},
10+
"telephony": {
11+
"nid": "2",
12+
"number": [{
13+
"type": "work",
14+
"prio": "1",
15+
"id": "0",
16+
"_Data": "01234 567890"
17+
}, {
18+
"type": "fax_work",
19+
"prio": "0",
20+
"id": "1",
21+
"_Data": "(01234) 56789-2"
22+
}]
23+
},
24+
"services": {
25+
"nid": "1",
26+
"email": {
27+
"classifier": "private",
28+
"id": "0",
29+
"_Data": "[email protected]"
30+
}
31+
},
32+
"setup": "",
33+
"features": {
34+
"doorphone": "0"
35+
},
36+
"mod_time": "1476188984",
37+
"uniqueid": "2"
38+
}, {
39+
"category": "",
40+
"person": {
41+
"realName": "Guter Nachbar"
42+
},
43+
"telephony": {
44+
"nid": "1",
45+
"number": {
46+
"type": "home",
47+
"vanity": "",
48+
"prio": "1",
49+
"id": "0",
50+
"_Data": "23456"
51+
}
52+
},
53+
"services": "",
54+
"setup": {
55+
"ringTone": ""
56+
},
57+
"mod_time": "1478438296",
58+
"uniqueid": "1"
59+
}, {
60+
"category": "0",
61+
"person": {
62+
"realName": "Arzt, Very long name because it consists of Praxis and two names."
63+
},
64+
"telephony": {
65+
"nid": "1",
66+
"number": {
67+
"type": "work",
68+
"prio": "1",
69+
"id": "0",
70+
"_Data": "012345 34567890"
71+
}
72+
},
73+
"services": "",
74+
"setup": "",
75+
"features": {
76+
"doorphone": "0"
77+
},
78+
"mod_time": "1532104029",
79+
"uniqueid": "3"
80+
}, {
81+
"category": "",
82+
"person": {
83+
"realName": "AVM Ansage (HD)"
84+
},
85+
"telephony": {
86+
"nid": "1",
87+
"number": {
88+
"prio": "1",
89+
"type": "work",
90+
"quickdial": "65",
91+
"id": "0",
92+
"_Data": "[email protected]"
93+
}
94+
},
95+
"services": "",
96+
"setup": "",
97+
"uniqueid": "5"
98+
}, {
99+
"category": "0",
100+
"person": {
101+
"realName": "Apostrophe' and german umlauts like ö and ü and ä - ß",
102+
"imageURL": "file:///var/InternerSpeicher/FRITZ/fonpix/2245353675-0.jpg"
103+
},
104+
"telephony": {
105+
"nid": "1",
106+
"number": {
107+
"type": "work",
108+
"prio": "1",
109+
"id": "0",
110+
"_Data": "098765 54321"
111+
}
112+
},
113+
"services": "",
114+
"setup": "",
115+
"mod_time": "1524933691",
116+
"uniqueid": "4",
117+
"features": {
118+
"doorphone": "0"
119+
}
120+
}, {
121+
"category": "0",
122+
"person": {
123+
"realName": "Multiple work phone numbers"
124+
},
125+
"telephony": {
126+
"nid": "2",
127+
"number": [{
128+
"type": "work",
129+
"prio": "1",
130+
"id": "0",
131+
"_Data": "3333333 33332"
132+
}, {
133+
"type": "work",
134+
"prio": "0",
135+
"id": "1",
136+
"_Data": "(3333333) 33332-1"
137+
}]
138+
},
139+
"services": "",
140+
"setup": "",
141+
"features": {
142+
"doorphone": "0"
143+
},
144+
"mod_time": "1532104412",
145+
"uniqueid": "6"
146+
}, {
147+
"category": "0",
148+
"person": {
149+
"realName": "An internation company",
150+
"imageURL": "file:///var/InternerSpeicher/FRITZ/fonpix/281288883304-0.jpg"
151+
},
152+
"telephony": {
153+
"nid": "1",
154+
"number": {
155+
"type": "work",
156+
"prio": "1",
157+
"id": "0",
158+
"_Data": "0047-0123456780"
159+
}
160+
},
161+
"services": {
162+
"nid": "1",
163+
"email": {
164+
"classifier": "private",
165+
"id": "0",
166+
"_Data": "[email protected]"
167+
}
168+
},
169+
"setup": "",
170+
"features": {
171+
"doorphone": "0"
172+
},
173+
"mod_time": "1524932919",
174+
"uniqueid": "7"
175+
}, {
176+
"category": "1",
177+
"person": {
178+
"realName": "Cellphone, Mr. Mobile"
179+
},
180+
"telephony": {
181+
"nid": "2",
182+
"number": [{
183+
"type": "home",
184+
"prio": "1",
185+
"id": "0",
186+
"_Data": "04567-98765"
187+
}, {
188+
"type": "mobile",
189+
"prio": "0",
190+
"id": "1",
191+
"_Data": "017700000001"
192+
}, {
193+
"type": "work",
194+
"prio": "0",
195+
"id": "2"
196+
}, {
197+
"type": "fax_work",
198+
"prio": "0",
199+
"id": "3"
200+
}]
201+
},
202+
"services": "",
203+
"setup": "",
204+
"uniqueid": "8",
205+
"features": {
206+
"doorphone": "0"
207+
},
208+
"mod_time": "1524932760"
209+
}, {
210+
"category": "0",
211+
"person": {
212+
"realName": "No telephony"
213+
},
214+
"services": {
215+
"nid": "1",
216+
"email": {
217+
"classifier": "private",
218+
"id": "0",
219+
"_Data": "[email protected]"
220+
}
221+
},
222+
"setup": "",
223+
"features": {
224+
"doorphone": "0"
225+
},
226+
"mod_time": "1515444645",
227+
"uniqueid": "9"
228+
}, {
229+
"category": "0",
230+
"person": {
231+
"realName": "Wecker 1"
232+
},
233+
"telephony": {
234+
"services": "",
235+
"number": {
236+
"type": "",
237+
"quickdial": "",
238+
"vanity": "",
239+
"prio": "1",
240+
"_Data": "**41"
241+
}
242+
}
243+
}]
244+
}
245+
}

spec/fritz-phonebook.xml

+2
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@
114114
<telephony nid="2">
115115
<number type="home" prio="1" id="0">04567-98765</number>
116116
<number type="mobile" prio="0" id="1">017700000001</number>
117+
<number type="work" prio="0" id="2"></number>
118+
<number type="fax_work" prio="0" id="3" />
117119
</telephony>
118120
<services />
119121
<setup />

src/lib-convert.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
}
6060

6161
for (var number of contact.telephony.number) {
62-
if (number.type in phonePropertyMapping) {
62+
if (number.type in phonePropertyMapping && number._Data) {
6363
if (!card[phonePropertyMapping[number.type]]) {
6464
card[phonePropertyMapping[number.type]] = [];
6565
}
@@ -71,7 +71,7 @@
7171
phoneNumber.push(area_code);
7272
}
7373

74-
if (country_code && needsCountryCode(cleanPhoneNumber) &&
74+
if (country_code && needsCountryCode(cleanPhoneNumber) &&
7575
(area_code || !needsAreaCode(cleanPhoneNumber))) {
7676
// Try eliminating leading 0, if exists
7777
phoneNumber[0] = phoneNumber[0].replace(/^([\(]*)0/, '$1');

0 commit comments

Comments
 (0)