FirebaseExtended / FirebaseExtended/reactfire

useFirestoreDocData & useFirestoreDoc won't throw a promise on permission denied

未关闭
#192 8 条评论 2 个 reaction 已指派 1 人 已被 @jhuleatt 认领 在 GitHub 查看
needs investigation v5
主要语言
TypeScript
星标
3.6k
派生
403
平均合并
14 小时 53 分钟
30 天内合并 PR
5

描述

### Version info

**React:** 16.12.0

**Firebase:** 7.5.2

**ReactFire:** 2.0.0-canary.1fce6b9

### Test case

I want to use role based authentication on documents, so when a document is successfully read in the app and then I change the access of that user, the listener throws an error instead of a Promise.

```ts
const CompanyCheck: React.FC = ({ children }) => {
const { companyId, setCompany } = useCompanyContext();

const firestore: Firebase['Firestore'] = useFirestore();

const companyRef = useRef(
firestore()
.collection('companies')
.doc(companyId)
);

useEffect(() => {
companyRef.current = firestore()
.collection('companies')
.doc(companyId);
}, [companyId, firestore]);

// This won't throw a promise on permission changes after successfull read.
const companyDoc = useFirestoreDocData(companyRef.current);

useEffect(() => {
setCompany(companyDoc);
}, [companyDoc, setCompany]);

return <>{children};
};
```

### Steps to reproduce

Use a correct example of read operation with role access, then once the data is displayed remove the access to the document and error boundary won't catch any error.

### Expected behavior

Throw a promise like when initial read fails so ErrorBoundary can catch the error.

### Actual behavior

Don't throw a Promise and error can't be handled. Error message is: 'permission-denied'

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。