liatrio/gratibot

View on GitHub

Showing 23 of 23 total issues

Similar blocks of code found in 2 locations. Consider refactoring.
Open

async function countRecognitionsGiven(user, timezone = null, days = null) {
let filter = { recognizer: user };
if (days && timezone) {
let userDate = moment(Date.now()).tz(timezone);
let midnight = userDate.startOf("day");
Severity: Major
Found in service/recognition.js and 1 other location - About 7 hrs to fix
service/recognition.js on lines 55..75

Similar blocks of code found in 2 locations. Consider refactoring.
Open

async function countRecognitionsReceived(user, timezone = null, days = null) {
let filter = { recognizee: user };
if (days && timezone) {
let userDate = moment(Date.now()).tz(timezone);
let midnight = userDate.startOf("day");
Severity: Major
Found in service/recognition.js and 1 other location - About 7 hrs to fix
service/recognition.js on lines 77..97

File recognition.js has 402 lines of code (exceeds 250 allowed). Consider refactoring.
Open

const config = require("../config");
const moment = require("moment-timezone");
const recognitionCollection = require("../database/recognitionCollection");
const goldenRecognitionCollection = require("../database/goldenRecognitionCollection");
const balance = require("./balance");
Severity: Minor
Found in service/recognition.js - About 5 hrs to fix

    Function giveGratitude has 53 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

    async function giveGratitude(gratitude) {
    let results = [];
     
    if (gratitude.giver_in_receivers) {
    gratitude.receivers = gratitude.receivers.filter(
    Severity: Major
    Found in service/recognition.js - About 2 hrs to fix

      Function redeemSelector has 48 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

      function redeemSelector(gratibotRewards) {
      let options = [];
      for (let i = 0; i < gratibotRewards.length; i++) {
      const item = {
      name: `${gratibotRewards[i].name}`,
      Severity: Minor
      Found in service/redeem.js - About 1 hr to fix

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

        function topGivers(giverScores) {
        let markdown = "*Top Givers*\n\n";
        markdown += giverScores.map(leaderboardEntry).join("\n");
         
        return {
        Severity: Major
        Found in service/leaderboard.js and 1 other location - About 1 hr to fix
        service/leaderboard.js on lines 109..121

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

        function topReceivers(receiverScores) {
        let markdown = "*Top Receivers*\n\n";
        markdown += receiverScores.map(leaderboardEntry).join("\n");
         
        return {
        Severity: Major
        Found in service/leaderboard.js and 1 other location - About 1 hr to fix
        service/leaderboard.js on lines 87..99

        Function timeRangeButtons has 46 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

        function timeRangeButtons() {
        return {
        type: "actions",
        block_id: "leaderboardButtons",
        elements: [
        Severity: Minor
        Found in service/leaderboard.js - About 1 hr to fix

          Function giveGratitude has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
          Open

          async function giveGratitude(gratitude) {
          let results = [];
           
          if (gratitude.giver_in_receivers) {
          gratitude.receivers = gratitude.receivers.filter(
          Severity: Minor
          Found in service/recognition.js - About 1 hr to fix

          Function timeRangeButtons has 36 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

          function timeRangeButtons() {
          return {
          type: "actions",
          block_id: "metricsButtons",
          elements: [
          Severity: Minor
          Found in service/metrics.js - About 1 hr to fix

            Function aggregateData has 29 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

            function aggregateData(response) {
            /*
            * leaderboard = {
            * userId: {
            * totalRecognition: int
            Severity: Minor
            Found in service/leaderboard.js - About 1 hr to fix

              Function metricsChartData has 28 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

              async function metricsChartData(timeRange) {
              const recognitionData = await recognition.getPreviousXDaysOfRecognition(
              "America/Los_Angeles",
              timeRange,
              );
              Severity: Minor
              Found in service/metrics.js - About 1 hr to fix

                Function gratitudeErrors has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                async function gratitudeErrors(gratitude) {
                return [
                gratitude.receivers.length === 0
                ? "- Mention who you want to recognize with @user"
                : "",
                Severity: Minor
                Found in service/recognition.js - About 1 hr to fix

                Similar blocks of code found in 2 locations. Consider refactoring.
                Open

                return `Congratulations, You just got the ${gratitude.type} from <@${gratitude.giver.id}> in <#${gratitude.channel}>, and are now the holder of the Golden Fistbump! You earned \`${gratitude.count}\` and your new balance is \`${receiverBalance}\`. While you hold the Golden Fistbump you will receive a 2X multiplier on all fistbumps received!\n>>>${gratitude.message}`;
                Severity: Major
                Found in service/recognition.js and 1 other location - About 1 hr to fix
                service/recognition.js on lines 435..435

                Similar blocks of code found in 2 locations. Consider refactoring.
                Open

                return `You just got a ${gratitude.type} from <@${gratitude.giver.id}> in <#${gratitude.channel}>. You earned \`${gratitude.count}\` and your new balance is \`${receiverBalance}\`\n>>>${gratitude.message}`;
                Severity: Major
                Found in service/recognition.js and 1 other location - About 1 hr to fix
                service/recognition.js on lines 416..416

                Function gratitudeErrors has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                async function gratitudeErrors(gratitude) {
                return [
                gratitude.receivers.length === 0
                ? "- Mention who you want to recognize with @user"
                : "",
                Severity: Minor
                Found in service/recognition.js - About 1 hr to fix

                  Identical blocks of code found in 2 locations. Consider refactoring.
                  Open

                  if (gratitude.giver_in_receivers) {
                  gratitude.receivers = gratitude.receivers.filter(
                  (x) => x.id !== gratitude.giver.id,
                  );
                  }
                  Severity: Minor
                  Found in service/recognition.js and 1 other location - About 55 mins to fix
                  service/recognition.js on lines 263..267

                  Identical blocks of code found in 2 locations. Consider refactoring.
                  Open

                  if (gratitude.giver_in_receivers) {
                  gratitude.receivers = gratitude.receivers.filter(
                  (x) => x.id !== gratitude.giver.id,
                  );
                  }
                  Severity: Minor
                  Found in service/recognition.js and 1 other location - About 55 mins to fix
                  service/recognition.js on lines 208..212

                  Function giveRecognition has 6 arguments (exceeds 4 allowed). Consider refactoring.
                  Open

                  recognizer,
                  recognizee,
                  message,
                  channel,
                  values,
                  Severity: Minor
                  Found in service/recognition.js - About 45 mins to fix

                    Similar blocks of code found in 2 locations. Consider refactoring.
                    Open

                    function timeRangeInfo(timeRange) {
                    return {
                    type: "context",
                    block_id: "metricsTimeRange",
                    elements: [
                    Severity: Minor
                    Found in service/metrics.js and 1 other location - About 45 mins to fix
                    service/leaderboard.js on lines 131..143
                    Severity
                    Category
                    Status
                    Source
                    Language