bramski/angular-indexedDB

Is the DbQ object really necessary? Why not just use $q

Opened this issue · 2 comments

I found the deleteDatabase method wasn't deleting my database correctly; it was clearing the stores I had contained within it but not deleting the database itself. The approach used is a little puzzling - why does this service make use of a DbQ wrapper, and why this functionality is needed over the $q service that comes with angular? Maybe I'm missing something...

original (not working as expected)

deleteDatabase: function () {
    return closeDatabase().then(function () {
        var defer;
        defer = new DbQ();
        defer.resolveWith(indexedDB.deleteDatabase(dbName));
            return defer.promise;
        })["finally"](function () {
            return $log.log("$indexedDB: " + dbName + " database deleted.");
        });
    }

modified (working)

deleteDatabase: function () {
    return closeDatabase().then(function() {
        var deferred = $q.defer();

        indexedDB.deleteDatabase(dbName).then(function (result) {
            console.log("$indexedDB: " + dbName + " database deleted.")
            deferred.resolve(result);
        }).catch(function(error) {
            deferred.reject(error);
        });

        return defer.promise;
    });
}

Is it just outdated? I can submit a pull request if you'd like.

Artifact from the original developer. It's probably unnecessary for
deletion. Was necessary for some of the other functions. Please do submit
a PR. Please make sure you modify the coffee source and not the compiled
JS.
On Jun 24, 2015 10:39 PM, "Danny Bullis" notifications@github.com wrote:

I found the deleteDatabase method wasn't deleting my database correctly;
it was clearing the stores I had contained within it but not deleting the
database itself. The approach used is a little puzzling - why does this
service make use of the DbQ wrapper around the $q service built into
angular?

original (not working as expected)

deleteDatabase: function () {
return closeDatabase().then(function () {
var defer;
defer = new DbQ();
defer.resolveWith(indexedDB.deleteDatabase(dbName));
return defer.promise;
})["finally"](function %28%29 {
return $log.log%28"$indexedDB:);
});
}

modified (working)

deleteDatabase: function () {
return closeDatabase().then(function() {
var deferred = $q.defer();

    indexedDB.deleteDatabase(dbName).then(function (result) {
        console.log("$indexedDB: " + dbName + " database deleted.")
        deferred.resolve(result);
    }).catch(function(error) {
        deferred.reject(error);
    });

    return defer.promise;
});

}

Is it just outdated? I can submit a pull request if you'd like.


Reply to this email directly or view it on GitHub
#39.

Please also write a test to ensure that deleteDatabase in the end does do as expected.