JIRA新BUG单浏览器通知

在这里插入图片描述

以下代码请放在油猴内使用:

// ==UserScript==
// @name         JIRA未处理任务通知
// @namespace    https://blog.csdn.net/weixin_43515759
// @version      1.0
// @description  Polls an API endpoint and sends a notification if conditions are met
// @author       72.1k
// @match        http://10.1.1.200:8080/*
// @grant        GM_notification
// ==/UserScript==(function () {'use strict';// 每10s查询一次const INTERVAL = 10 * 1000;// 设置api接口const API_URL = '/rest/issueNav/1/issueTable';const CACHE_KEY = 'jira-bug-cache'// 开始运行run()function run() {pollAPI()setInterval(pollAPI, INTERVAL);}// Function to poll the API endpointfunction pollAPI() {fetch(API_URL, {method: 'POST',headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','X-Atlassian-Token': 'no-check','X-Requested-With': 'XMLHttpRequest',},// body内容从/issues/?filter=-1页面中的接口/rest/issueNav/1/issueTable获取body: 'startIndex=0&filterId=-1&jql=resolution+%3D+Unresolved+AND+assignee+in+(currentUser())+ORDER+BY+updatedDate+DESC&layoutKey=split-view'}).then(response => response.json()).then(data => {const issueTable = data.issueTable || {}const table = issueTable.table || []// 检测第一次运行const cacheData = readCache()if (cacheData.length <= 0) {const keys = table.map(item => item.key)saveCache(keys)return}table.map(item => {const { key, status, summary } = item || {}if (["挂起"].includes(status)) return//    新数据if (!cacheData.includes(key)) {saveCache(key)sendNotification(key, '您有一个新的任务待处理', summary)}})}).catch(error => console.error(error));}// 发送通知function sendNotification(key, title, text) {const NOTIFICATION_OPTIONS = {title,text,image: '/favicon.ico',timeout: 0,onclick() {window.open(`/browse/${key}`)},};GM_notification(NOTIFICATION_OPTIONS);}// 保存key到缓存function saveCache(key) {if(typeof key === 'object'){setStorageJSON(CACHE_KEY, key)return}// 读缓存const cacheData = readCache()// 修改值if (!cacheData.includes(key)) {cacheData.push(key)// 写缓存setStorageJSON(CACHE_KEY, cacheData)}}// 读取key缓存function readCache() {return getStorageJSON(CACHE_KEY, '[]')}/*** Storage* @param {*} name 名称* @param {*} value 值*/function setStorage(name, value) {return localStorage.setItem(name, value)}function getStorage(name) {return localStorage.getItem(name)}function setStorageJSON(name, value = {}) {return localStorage.setItem(name, JSON.stringify(value))}function getStorageJSON(name, defultData = '{}') {return JSON.parse(localStorage.getItem(name) || defultData)}function removeStorage(name) {return localStorage.removeItem(name)}function clearStorage() {return localStorage.clear()}
})();

刷新JIRA页面即可开始工作

缺点:需要浏览器和页面一直开启,才会有通知

解决方案:

将JIRA加入固定标签页
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336548.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT付费创作系统V2.5.5独立版+前端

ChatGPT付费创作系统V2.5.5版本优化了很多细节&#xff0c;功能增加增加长篇写作功能。该版本为编译版无开源&#xff0c;本版本特别处理了后台弹窗、暗链网址。特别优化了数据库。升级过程中未发现任何BUG&#xff0c;全新安装或者升级安装均未出现400或者500错误&#xff0c;…

高级JavaScript中最有趣的原型、原型链?

封装、继承、多态 基于类 class&#xff0c;JavaScript没有类&#xff1b;JavaScript可以实现面向对象语言特征&#xff1a;封装、继承、多态 封装&#xff1a;通俗的来说就是封装函数&#xff0c;通过私有化的变量和私有化的方法&#xff0c;不让外部访问到 继承&#xff1…

【模拟IC学习笔记】 PSS和Pnoise仿真

目录 PSS Engine Beat frequency Number of harmonics Accuracy Defaults Run tranisent?的3种设置 Pnoise type noise Timeaverage sampled(jitter) Edge Crossing Edge Delay Sampled Phase sample Ratio 离散时间网络(开关电容电路)的噪声仿真方法 PSS PSS…

【web】springboot3 生成本地文件 url

文章目录 流程效果静态资源访问ServiceServiceImplController 流程 avatar_dir&#xff1a;请求图片在服务端的存放路径user.dir&#xff1a;项目根目录 效果 静态资源访问 application.yml 设置静态文件存储路径custom:upload:avatar_dir: ${user.dir}/avatar_dir/avatar_d…

Kubernetes(K8S)云服务器实操TKE

一、 Kubernetes(K8S)简介 Kubernetes源于希腊语,意为舵手,因为首尾字母中间正好有8个字母,简称为K8S。Kubernetes是当今最流行的开源容器管理平台,是 Google 发起并维护的基于 Docker 的开源容器集群管理系统。它是大名鼎鼎的Google Borg的开源版本。 K8s构建在 Docker …

【C++】十大排序算法

文章目录 十大排序算法插入排序O(n^2^)冒泡排序O(n^2^)选择排序O(n^2^)希尔排序——缩小增量排序O(nlogn)快速排序O(nlogn)堆排序O(nlogn)归并排序(nlogn)计数排序O(nk)基数排序O(n*k)桶排序O(nk) 十大排序算法 排序算法的稳定性&#xff1a;在具有多个相同关键字的记录中&…

C# WPF 数据绑定

需求 后台变量发生改变&#xff0c;前端对应的相关属性值也发生改变 实现 接口 INotifyPropertyChanged 用于通知客户端&#xff08;通常绑定客户端&#xff09;属性值已更改。 示例 示例一 官方示例代码如下 using System; using System.Collections.Generic; using Sy…

社交距离 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0…N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。 满足:每当一个员工进入时,…

鱼哥赠书活动第⑥期:《内网渗透实战攻略》看完这本书教你玩转内网渗透测试成为实战高手!!!!

鱼哥赠书活动第⑥期&#xff1a;《内网渗透实战攻略》 如何阅读本书&#xff1a;本书章节介绍&#xff1a;本书大致目录&#xff1a;适合阅读对象&#xff1a;赠书抽奖规则:往期赠书福利&#xff1a; 当今&#xff0c;网络系统面临着越来越严峻的安全挑战。在众多的安全挑战中&…

springboot2.7集成sharding-jdbc4.1.1实现业务分表

1、引入maven <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.1.1</version></dependency> 2、基本代码示例 基本逻辑&#xff1a;利用数…

Spring Redis Client使用Hessian序列化HINCRBY命令的Bug

前言&#xff1a; 公司自己封装Redis Client架包&#xff0c;使用Hessian协议对Redis中Value值进行序列化。在使用Hash结构的HINCRBY命令&#xff0c;处理序列化异常的问题。下面&#xff0c;我将详细说明一下。 正文&#xff1a; 公司封装Redis Client架包&#xff0c;其实就…

松鼠目标检测数据集VOC格式400张

松鼠&#xff0c;一种小巧玲珑、活泼可爱的啮齿类动物&#xff0c;以其蓬松的大尾巴和机敏的动作而广受欢迎。 松鼠通常体型小巧&#xff0c;四肢灵活&#xff0c;尾巴蓬松。它们的耳朵大而直立&#xff0c;眼睛明亮&#xff0c;给人留下了深刻的印象。松鼠的毛色因种类而异&a…