Skip to content

Instantly share code, notes, and snippets.

@mtt87
Last active August 29, 2015 14:11
Show Gist options
  • Save mtt87/3b976c1131f53f1f58d2 to your computer and use it in GitHub Desktop.
Save mtt87/3b976c1131f53f1f58d2 to your computer and use it in GitHub Desktop.
Prismic.io + Angular the right way, advice needed
// DRY????? :( How can I avoid to repeat $window.Prismic.Api('...', callback) ??
app.factory('Prismic', function($window, $q) {
return {
blogList: function(page) {
var blogList = $q.defer();
$window.Prismic.Api('https://thtest.prismic.io/api', function(err, Api) {
Api.form('everything')
.ref(Api.master())
.query(Prismic.Predicates.at('document.type', 'article')).pageSize(3).page(page).submit(function(err, response) {
if (err) {
console.log(err);
}
blogList.resolve({
err: err,
result: response.results
});
});
});
return blogList.promise;
},
singleBlogPost: function(id) {
var singleBlogPost = $q.defer();
$window.Prismic.Api('https://thtest.prismic.io/api', function(err, Api) {
Api.form('everything')
.ref(Api.master())
.query(Prismic.Predicates.at('document.id', id)).submit(function(err, response) {
if (err) {
console.log(err);
}
singleBlogPost.resolve({
err: err,
result: response.results
});
});
});
return singleBlogPost.promise;
}
};
});
@bettiolo
Copy link

what about this?

app.factory('Prismic', function($window, $q) {
    return {
        blogList: function(page) {
            var query = query('document.type', 'article').pageSize(3).page(page);
            return submit(query);
        },
        singleBlogPost: function(id) {
            var query = query('document.id', 'id');
            return submit(query);
        }
    };
});

function query(where, what) {
    $window.Prismic.Api('https://thtest.prismic.io/api', function(err, Api) {
        return Api.form('everything')
            .ref(Api.master())
            .query(Prismic.Predicates.at(where, what))
    });
}

function submit(query) {
    var q = $q.defer();
    query.submit(function(err, response) {
        if (err) {
            console.log(err);
        }
        q.resolve({
            err: err,
            result: response.results
        });
    });
    return q.promise;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment