DEV: removes _.find from codebase

DEV: removes _.find from codebase

From b1727537b28f5922942c816dc4164693a24c8eb9 Mon Sep 17 00:00:00 2001
From: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Date: Mon, 19 Nov 2018 11:46:26 +0100
Subject: [PATCH] DEV: removes _.find from codebase


diff --git a/app/assets/javascripts/discourse/controllers/user-activity.js.es6 b/app/assets/javascripts/discourse/controllers/user-activity.js.es6
index d633f21..cd4ca93 100644
--- a/app/assets/javascripts/discourse/controllers/user-activity.js.es6
+++ b/app/assets/javascripts/discourse/controllers/user-activity.js.es6
@@ -10,9 +10,9 @@ export default Ember.Controller.extend({
   _showFooter: function() {
     var showFooter;
     if (this.get("userActionType")) {
-      const stat = _.find(this.get("model.stats"), {
-        action_type: this.get("userActionType")
-      });
+      const stat = (this.get("model.stats") || []).find(
+        s => s.action_type === this.get("userActionType")
+      );
       showFooter = stat && stat.count <= this.get("model.stream.itemsLoaded");
     } else {
       showFooter =
diff --git a/app/assets/javascripts/polyfills.js b/app/assets/javascripts/polyfills.js
index 93b18ae..116b16d 100644
--- a/app/assets/javascripts/polyfills.js
+++ b/app/assets/javascripts/polyfills.js
@@ -85,7 +85,7 @@ if (!Array.prototype.includes) {
         if (sameValueZero(o[k], searchElement)) {
           return true;
         }
-        // c. Increase k by 1. 
+        // c. Increase k by 1.
         k++;
       }
 
@@ -102,7 +102,7 @@ if (!String.prototype.includes) {
       if (typeof start !== 'number') {
         start = 0
       }
-      
+
       if (start + search.length > this.length) {
         return false
       } else {
@@ -111,4 +111,52 @@ if (!String.prototype.includes) {
     }
   })
 }
+
+// https://tc39.github.io/ecma262/#sec-array.prototype.find
+if (!Array.prototype.find) {
+  Object.defineProperty(Array.prototype, 'find', {
+    value: function(predicate) {
+     // 1. Let O be ? ToObject(this value).
+      if (this == null) {
+        throw new TypeError('"this" is null or not defined');
+      }
+
+      var o = Object(this);
+
+      // 2. Let len be ? ToLength(? Get(O, "length")).
+      var len = o.length >>> 0;
+
+      // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+      if (typeof predicate !== 'function') {
+        throw new TypeError('predicate must be a function');
+      }
+
+      // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+      var thisArg = arguments[1];
+
+      // 5. Let k be 0.
+      var k = 0;
+
+      // 6. Repeat, while k < len
+      while (k < len) {
+        // a. Let Pk be ! ToString(k).
+        // b. Let kValue be ? Get(O, Pk).
+        // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+        // d. If testResult is true, return kValue.
+        var kValue = o[k];
+        if (predicate.call(thisArg, kValue, k, o)) {
+          return kValue;
+        }
+        // e. Increase k by 1.
+        k++;
+      }
+
+      // 7. Return undefined.
+      return undefined;
+    },
+    configurable: true,
+    writable: true
+  });
+}
+
 /* eslint-enable */

GitHub

1 Like