- From: Marcos Cáceres <notifications@github.com>
- Date: Thu, 26 Jan 2017 22:54:00 -0800
- To: w3c/webpayments-payment-apps-api <webpayments-payment-apps-api@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webpayments-payment-apps-api/issues/94/275600989@github.com>
Ok, so considering all feedback thus far, I want to avoid asking for permissions on multiple instances (because it leads to redundant code, like):
```JS
// Only the first one matters... so second third line is just code duplication.
Promise.all([
sw1.paymentManager.requestPermission(),
sw2.paymentManager.requestPermission(),
]).then()
```
Also, I don't know if the app should be allowed to revoke its permission (through some kind on `.unregister()`). That's been [really controversial](https://github.com/w3c/permissions/issues/46), and more of less rejected in permission API discussions (I had to pref that off in Gecko).
So how about...
### Permission can only be triggered via user interaction:

The user MUST activate the element, in this case a button.
### Getting permission
So, "Let's get permission"... but this this time, using `PaymentManager.requestPermission()` - similarly how Web Notifications does things.
```JS
button.addEventListener("click", async () => {
let permCheck;
try {
permCheck = await navigator.permissions.query({ name: "payments" });
} catch (err) {
return; // not supported
}
const canProceed = await permissionsCheck(permCheck);
if (!canProceed) {
return; // we got denied.
}
weCanDoStuff(); // Yay!
}, { once: true });
async function permissionsCheck({ state }) {
switch (state) {
case "prompt":
const result = await PaymentManager.requestPermission();
return await permissionsCheck(Promise.resolve({ state: result }));
case "granted":
return true;
default:
return false;
}
}
```
### Proposed IDL
```JS
interface PaymentManager {
static Promise<PermissionState> requestPermission();
};
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webpayments-payment-apps-api/issues/94#issuecomment-275600989
Received on Friday, 27 January 2017 06:54:32 UTC