diff --git a/components/app.vue b/components/app.vue
index ba6a806..3a028ba 100644
--- a/components/app.vue
+++ b/components/app.vue
@@ -225,7 +225,19 @@ function start() {
}
function downloadEstimate(estimate) {
-
+ fetch(`/api/pdf`,
+ {method: 'POST',
+ body: JSON.stringify(estimate),
+ headers: {
+ "Accept": "application/json",
+ "Authorization": `Bearer ${this.token}`,
+ },
+ }).then(response => {
+ if (response.ok) { return response.blob() }
+ }).then (result => {
+ console.log(result)
+ if (!result) return // Exit if token is invalid or blank file returned
+ })
}
export default {
diff --git a/components/download-dialog.vue b/components/download-dialog.vue
new file mode 100644
index 0000000..eb7d236
--- /dev/null
+++ b/components/download-dialog.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/components/estimates.vue b/components/estimates.vue
index cbd1730..72d830b 100644
--- a/components/estimates.vue
+++ b/components/estimates.vue
@@ -54,18 +54,23 @@ ${{(estimate.price / 100).toLocaleString()}}
-
+
+ dlink = ''"
+:fileName="`estimate-${estimate.id}.pdf`" :url="dlink">
+
+
+
+
diff --git a/skouter.go b/skouter.go
index dd75eff..ebbefd9 100644
--- a/skouter.go
+++ b/skouter.go
@@ -2268,7 +2268,10 @@ func clipLetterhead(w http.ResponseWriter, db *sql.DB, r *http.Request) {
// claims, err := getClaims(r)
if err != nil { http.Error(w, "Invalid token.", 422); return }
img, t, err := image.Decode(r.Body)
- if err != nil { http.Error(w, "Invalid file.", 422); return }
+ if err != nil {
+ http.Error(w, "Invalid file, JPEG and PNG only.", 422)
+ return
+ }
for _, v := range validTypes {
if v == "image/"+t { isValidType = true }
}
@@ -2646,8 +2649,8 @@ func seedEstimates(db *sql.DB, users []User, ltypes []LoanType) []Estimate {
estimates = append(estimates, estimate)
}
- estimate[0].User = users[0].Id
- estimate[1].User = users[0].Id
+ estimates[0].User = users[0].Id
+ estimates[1].User = users[0].Id
for i := range estimates {
err = estimates[i].insertEstimate(db)