UNPKG

@atlaskit/global-search

Version:

A cross-product search component (batteries included)

143 lines (120 loc) 4.72 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _utilServiceSupport = require("@atlaskit/util-service-support"); var _Result = require("../model/Result"); var RECENT_PAGES_PATH = 'rest/recentlyviewed/1.0/recent'; var RECENT_SPACE_PATH = 'rest/recentlyviewed/1.0/recent/spaces'; var ConfluenceClientImpl = /*#__PURE__*/function () { function ConfluenceClientImpl(url) { (0, _classCallCheck2.default)(this, ConfluenceClientImpl); this.serviceConfig = { url: url }; } (0, _createClass2.default)(ConfluenceClientImpl, [{ key: "getRecentItems", value: function () { var _getRecentItems = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var recentPages, baseUrl; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this.createRecentRequestPromise(RECENT_PAGES_PATH); case 2: recentPages = _context.sent; baseUrl = this.serviceConfig.url; return _context.abrupt("return", recentPages.filter(function (page) { return !!page.title; }).map(function (recentPage) { return recentPageToResult(recentPage, baseUrl); })); case 5: case "end": return _context.stop(); } } }, _callee, this); })); function getRecentItems() { return _getRecentItems.apply(this, arguments); } return getRecentItems; }() }, { key: "getRecentSpaces", value: function () { var _getRecentSpaces = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { var recentSpaces, baseUrl; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return this.createRecentRequestPromise(RECENT_SPACE_PATH); case 2: recentSpaces = _context2.sent; baseUrl = this.serviceConfig.url; return _context2.abrupt("return", recentSpaces.map(function (recentSpace) { return recentSpaceToResult(recentSpace, baseUrl); })); case 5: case "end": return _context2.stop(); } } }, _callee2, this); })); function getRecentSpaces() { return _getRecentSpaces.apply(this, arguments); } return getRecentSpaces; }() }, { key: "createRecentRequestPromise", value: function createRecentRequestPromise(path) { var options = { path: path }; return _utilServiceSupport.utils.requestService(this.serviceConfig, options); } }]); return ConfluenceClientImpl; }(); exports.default = ConfluenceClientImpl; function recentPageToResult(recentPage, baseUrl) { return { resultId: String(recentPage.id), name: recentPage.title || '', // This is a failsafe, there should be a filter to drop pages with no titles href: "".concat(baseUrl).concat(recentPage.url), containerName: recentPage.space, analyticsType: _Result.AnalyticsType.RecentConfluence, resultType: _Result.ResultType.ConfluenceObjectResult, contentType: "confluence-".concat(recentPage.contentType), iconClass: recentPage.iconClass, containerId: recentPage.spaceKey, isRecentResult: true, friendlyLastModified: undefined // not available for recent results }; } function recentSpaceToResult(recentSpace, baseUrl) { return { resultId: recentSpace.id, name: recentSpace.name, href: "".concat(baseUrl, "/spaces/").concat(recentSpace.key, "/overview"), avatarUrl: recentSpace.icon, analyticsType: _Result.AnalyticsType.RecentConfluence, resultType: _Result.ResultType.GenericContainerResult, contentType: _Result.ContentType.ConfluenceSpace }; }