/** * Service which helps set the contents of the tags (and the of a page). */ angular.module('quay').factory('MetaService', ['$interpolate', 'Config', '$rootScope', '$interval', function($interpolate, Config, $rootScope, $interval) { var metaService = {}; var interpolate = function(page, expr, callback) { $rootScope.$watch(page.scope, function() { var inter = $interpolate(expr, true, null, true); callback(inter(page.scope)); }); }; var initial = function(value, default_value, callback) { if (!value) { callback(default_value); return; } if (value.indexOf('{{') < 0) { callback(default_value); return; } callback('Loading...'); }; metaService.getInitialTitle = function(page, callback) { var route = page.$$route; initial(route && route.title, Config.REGISTRY_TITLE_SHORT, callback); }; metaService.getInitialDescription = function(page, callback) { var route = page.$$route; initial(route && route.description, Config.REGISTRY_TITLE_SHORT, callback); }; metaService.getTitle = function(page, callback) { var route = page.$$route; if (!route || !route.title || route.title.indexOf('{{') < 0) { return; } interpolate(page, route.title, callback); }; metaService.getDescription = function(page, callback) { var route = page.$$route; if (!route || !route.description || route.description.indexOf('{{') < 0) { return; } interpolate(page, route.description, callback); }; return metaService; }]);