fix: ensure reward claim happens after file view request

This commit is contained in:
Sean Yesmunt 2019-09-18 14:41:20 -04:00
parent 14f4401aef
commit 59872056eb
3 changed files with 29 additions and 24 deletions

View file

@ -14,7 +14,7 @@ type Analytics = {
pageView: string => void, pageView: string => void,
setUser: Object => void, setUser: Object => void,
toggle: (boolean, ?boolean) => void, toggle: (boolean, ?boolean) => void,
apiLogView: (string, string, string, ?number, ?() => void) => void, apiLogView: (string, string, string, ?number, ?() => void) => Promise<any>,
apiLogPublish: () => void, apiLogPublish: () => void,
tagFollowEvent: (string, boolean, string) => void, tagFollowEvent: (string, boolean, string) => void,
emailProvidedEvent: () => void, emailProvidedEvent: () => void,
@ -49,6 +49,7 @@ const analytics: Analytics = {
// @endif // @endif
}, },
apiLogView: (uri, outpoint, claimId, timeToStart) => { apiLogView: (uri, outpoint, claimId, timeToStart) => {
return new Promise((resolve, reject) => {
if (analyticsEnabled && (isProduction || devInternalApis)) { if (analyticsEnabled && (isProduction || devInternalApis)) {
const params: { const params: {
uri: string, uri: string,
@ -66,8 +67,11 @@ const analytics: Analytics = {
params.time_to_start = timeToStart; params.time_to_start = timeToStart;
} }
Lbryio.call('file', 'view', params); resolve(Lbryio.call('file', 'view', params));
} else {
resolve();
} }
});
}, },
apiLogSearch: () => { apiLogSearch: () => {
if (analyticsEnabled && isProduction) { if (analyticsEnabled && isProduction) {

View file

@ -28,7 +28,7 @@ type Props = {
title: ?string, title: ?string,
floatingPlayerEnabled: boolean, floatingPlayerEnabled: boolean,
clearPlayingUri: () => void, clearPlayingUri: () => void,
triggerAnalyticsView: (string, number) => void, triggerAnalyticsView: (string, number) => Promise<any>,
claimRewards: () => void, claimRewards: () => void,
}; };
@ -74,10 +74,11 @@ export default function FileViewer(props: Props) {
useEffect(() => { useEffect(() => {
if (playTime && isReadyToPlay && !hasRecordedView) { if (playTime && isReadyToPlay && !hasRecordedView) {
const timeToStart = Date.now() - playTime; const timeToStart = Date.now() - playTime;
triggerAnalyticsView(uri, timeToStart); triggerAnalyticsView(uri, timeToStart).then(() => {
claimRewards(); claimRewards();
setPlayTime(null);
setHasRecordedView(false); setHasRecordedView(false);
setPlayTime(null);
});
} }
}, [setPlayTime, triggerAnalyticsView, isReadyToPlay, hasRecordedView, playTime, uri, claimRewards]); }, [setPlayTime, triggerAnalyticsView, isReadyToPlay, hasRecordedView, playTime, uri, claimRewards]);

View file

@ -430,6 +430,6 @@ export function doAnalyticsView(uri, timeToStart) {
return; return;
} }
analytics.apiLogView(uri, outpoint, claimId, timeToStart); return analytics.apiLogView(uri, outpoint, claimId, timeToStart);
}; };
} }