// This will correctly set the text black when the file exists, and red when it doesn't // but the tooltip is _permanently_ "Expected: null" regardless of whether the file exists or not. // useable with o.datatype = "file" validation.types.file = function() { var self = this; if (this.value.length == 0) { return true; } var outcome = fs.stat(this.value).then(function(blob) { console.log("statted a blog to", blob); if (blob.type == "file") { return true; } return _("Path exists but is not a file"); }).catch(function(gak) { return _("File not found"); }) .then(function(msg) { var f = L.bind(function(a) { console.log("inside final bound", this, self, a); return this.assert(a == true, a); // breaking in validation.js, I see this correctly sets the .error attribute. }, self, msg); return f(); }); console.log("final type file outcome: ", outcome); return L.resolveDefault(outcome, "something went bang"); } /// This attempts to try a "validate" function instead /// o.validate = valid_file // console.log will show the expected value, but text is always red, // and tooltip is always: [object: Promise] async function valid_file(section, formvalue) { var outcome = await fs.stat(formvalue).then(function(blob) { console.log("statted a blog to", blob); if (blob.type == "file") { return true; } return _("Path exists but is not a file"); }).catch(function(gak) { return _("File not found"); }) console.log("final outcome: ", outcome); // looks good, but... no. return L.resolveDefault(outcome, "something went bang"); // trying without await/async and resolving doesn't help... // return outcome; }