From fec9885a64f7c8528d962237a5b3317ca8782d40 Mon Sep 17 00:00:00 2001
From: Daniel Triendl <daniel@pew.cc>
Date: Wed, 9 Dec 2020 10:54:13 +0100
Subject: [PATCH] Timemanger immer anzeigen, TAPI Suche nur wenn mehr als 3
 Ziffern bei Nummer

---
 3CX_TAPI.user.js       | 20 +++++++++++---------
 package.json           |  2 +-
 src/js/call-history.ts | 18 +++++++++---------
 src/js/utils.ts        |  2 +-
 4 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js
index 5aa4841..0ec5003 100644
--- a/3CX_TAPI.user.js
+++ b/3CX_TAPI.user.js
@@ -1,7 +1,7 @@
 // ==UserScript==
 // @name          3CX TAPI
 // @namespace     http://cp-solutions.at
-// @version       7.0.2
+// @version       7.0.3
 // @author        Daniel Triendl <d.triendl@cp-solutions.at>
 // @copyright     Copyright 2020 CP Solutions GmbH
 // @source        http://scootaloo.cp-austria.at/gitlist/3cx_tapi.git
@@ -3502,7 +3502,7 @@ var external_axiosGmxhrAdapter_default = /*#__PURE__*/__webpack_require__.n(exte
 external_axios_default.a.defaults.adapter = external_axiosGmxhrAdapter_default.a;
 
 function extractNumber(s) {
-    var match = /(\+?[0-9]+)/.exec(s);
+    var match = /(\+?[0-9]{4,})/.exec(s);
     if (!match) {
         return undefined;
     }
@@ -3530,9 +3530,9 @@ class call_history_CallHistory {
         this.callerIds = {};
     }
     updateCallHistoryEntry(call, callerId) {
-        if (callerId.tD_NAME !== '') {
-            var span = call.querySelector('span');
-            this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId);
+        var span = call.querySelector('span');
+        this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId);
+        if (callerId && callerId.tD_NAME !== '') {
             var text = span.textContent;
             span.textContent = callerId.tD_NAME;
             var br = document.createElement('br');
@@ -3544,9 +3544,6 @@ class call_history_CallHistory {
         }
     }
     showTimeManager(call, date, callerId) {
-        if (!callerId.tD_ID) {
-            return;
-        }
         var dateParts = date.match(/^(?<date>.*), (?<duration>[0-9]{2}:[0-9]{2}:[0-9]{2})$/);
         var duration = '00:00:00';
         if (dateParts) {
@@ -3571,7 +3568,11 @@ class call_history_CallHistory {
             parsedDate.getMinutes().toString().padStart(2, '0');
         var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString();
         var toolbar = call.querySelector('.wcToolbarTiles');
-        var href = 'domizil://PM/Zeitbuchung?KontaktId=' + callerId.tD_ID + '&connect=' + connect + '&length=' + length;
+        var href = 'domizil://PM/Zeitbuchung?';
+        if (callerId && callerId.tD_ID) {
+            href += 'KontaktId=' + callerId.tD_ID + '&';
+        }
+        href += 'connect=' + connect + '&length=' + length;
         var a = document.createElement('a');
         a.title = 'PM Zeitbuchung';
         a.dataset.domizilLink = href;
@@ -3597,6 +3598,7 @@ class call_history_CallHistory {
             var span = element.querySelector('span');
             var number = extractNumber(span.textContent);
             if (!number) {
+                this.updateCallHistoryEntry(element, undefined);
                 return;
             }
             if (this.callerIds[number] !== undefined) {
diff --git a/package.json b/package.json
index 09bb2c2..f35f6ac 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "3cp-tapi",
   "description": "Build your UserScript with webpack",
-  "version": "7.0.2",
+  "version": "7.0.3",
   "author": {
     "name": "Daniel Triendl",
     "email": "d.triendl@cp-solutions.at"
diff --git a/src/js/call-history.ts b/src/js/call-history.ts
index efa6406..14d7e1e 100644
--- a/src/js/call-history.ts
+++ b/src/js/call-history.ts
@@ -6,11 +6,10 @@ export class CallHistory {
   private callerIds: { [number: string]: TapiContact } = {}
 
   private updateCallHistoryEntry (call: HTMLElement, callerId: TapiContact) {
-    if (callerId.tD_NAME !== '') {
-      var span = call.querySelector('span')
-
-      this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId)
+    var span = call.querySelector('span')
+    this.showTimeManager(call, span.nextSibling.textContent.trim(), callerId)
 
+    if (callerId && callerId.tD_NAME !== '') {
       var text = span.textContent
       span.textContent = callerId.tD_NAME
       var br = document.createElement('br')
@@ -23,10 +22,6 @@ export class CallHistory {
   }
 
   private showTimeManager (call: HTMLElement, date: string, callerId: TapiContact) {
-    if (!callerId.tD_ID) {
-      return
-    }
-
     var dateParts = date.match(/^(?<date>.*), (?<duration>[0-9]{2}:[0-9]{2}:[0-9]{2})$/)
     var duration = '00:00:00'
     if (dateParts) {
@@ -56,7 +51,11 @@ export class CallHistory {
     var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString()
 
     var toolbar = call.querySelector('.wcToolbarTiles')
-    var href = 'domizil://PM/Zeitbuchung?KontaktId=' + callerId.tD_ID + '&connect=' + connect + '&length=' + length
+    var href = 'domizil://PM/Zeitbuchung?'
+    if (callerId && callerId.tD_ID) {
+      href += 'KontaktId=' + callerId.tD_ID + '&'
+    }
+    href += 'connect=' + connect + '&length=' + length
     var a = document.createElement('a')
     a.title = 'PM Zeitbuchung'
     a.dataset.domizilLink = href
@@ -82,6 +81,7 @@ export class CallHistory {
     var span = element.querySelector('span')
     var number = extractNumber(span.textContent)
     if (!number) {
+      this.updateCallHistoryEntry(element, undefined)
       return
     }
 
diff --git a/src/js/utils.ts b/src/js/utils.ts
index cf4d598..b0ae116 100644
--- a/src/js/utils.ts
+++ b/src/js/utils.ts
@@ -19,7 +19,7 @@ axios.defaults.adapter = adapter
 export { axios }
 
 export function extractNumber (s: string) {
-  var match = /(\+?[0-9]+)/.exec(s)
+  var match = /(\+?[0-9]{4,})/.exec(s)
   if (!match) {
     return undefined
   }