ariaNgVersionService.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').factory('ariaNgVersionService', ['ariaNgNativeElectronService', function (ariaNgNativeElectronService) {
  4. var latestApi = 'https://api.github.com/repos/mayswind/AriaNg-Native/releases/latest';
  5. var getTheLatestVersion = function () {
  6. return ariaNgNativeElectronService.requestHttp({
  7. url: latestApi,
  8. method: 'GET',
  9. headers: {
  10. 'Accept': 'application/vnd.github.v3+json'
  11. }
  12. })
  13. };
  14. var compareVersion = function (version1, version2) {
  15. var parts1 = version1.split('.');
  16. var parts2 = version2.split('.');
  17. for (var i = 0; i < Math.max(parts1.length, parts2.length); i++) {
  18. if (parts1[i] && angular.isUndefined(parts2[i])) { // 1.1.1 > 1.1, 1.1.0 == 1.1
  19. return 1; // version1 > version2
  20. }
  21. if (parts2[i] && angular.isUndefined(parts1[i])) {
  22. return -1; // version1 < version2
  23. }
  24. if (parts2[i].indexOf('-') > 0 && parts1[i].indexOf('-') < 0) { // 1.1.0 > 1.1.0-beta1
  25. return 1; // version1 > version2
  26. } else if (parts1[i].indexOf('-') > 0 && parts2[i].indexOf('-') < 0) {
  27. return -1; // version1 < version2
  28. }
  29. var subParts1 = parts1[i].split('-');
  30. var subParts2 = parts2[i].split('-');
  31. var subPart0CompareResult = String.naturalCompare(subParts1[0], subParts2[0]);
  32. if (subPart0CompareResult > 0) { // 1.1.1 > 1.1.0
  33. return 1; // version1 > version2
  34. } else if (subPart0CompareResult < 0) {
  35. return -1; // version1 < version2
  36. }
  37. if (!angular.isUndefined(subParts1[1]) && !angular.isUndefined(subParts2[1])) {
  38. var subPart1CompareResult = String.naturalCompare(subParts1[1], subParts2[1]);
  39. if (subPart1CompareResult > 0) { // 1.1.0-beta2 > 1.1.0-beta1
  40. return 1; // version1 > version2
  41. } else if (subPart1CompareResult < 0) {
  42. return -1; // version1 < version2
  43. }
  44. }
  45. }
  46. return 0;
  47. };
  48. return {
  49. getBuildVersion: function () {
  50. return 'v' + ariaNgNativeElectronService.getVersion();
  51. },
  52. getBuildVersionNumber: function () {
  53. return ariaNgNativeElectronService.getVersion();
  54. },
  55. getAriaNgVersion: function() {
  56. return 'v' + ariaNgNativeElectronService.getAriaNgVersion();
  57. },
  58. getBuildCommit: function () {
  59. return ariaNgNativeElectronService.getBuildCommit();
  60. },
  61. getTheLatestVersion: getTheLatestVersion,
  62. compareVersion: compareVersion
  63. };
  64. }]);
  65. }());