Esempio n. 1
0
  _handleQuerySuccess(result: QueryResult): void {
    this._fetchedQuery = true;

    throwFailedPromise(
      this._storeData
        .getTaskQueue()
        .enqueue(() => {
          const response = result.response;
          invariant(
            response && typeof response === 'object',
            'RelayPendingQueryTracker: Expected response to be an object, got ' +
              '`%s`.',
            response ? typeof response : response,
          );
          this._storeData.handleQueryPayload(
            this._query,
            response,
            this._forceIndex,
          );
        })
        .then(
          this._markQueryAsResolved.bind(this),
          this._markAsRejected.bind(this),
        ),
    );
  }
Esempio n. 2
0
 sendMutation(mutationRequest: RelayMutationRequest): void {
   const implementation = this._getImplementation();
   this._subscribers.forEach(({mutationCallback}) => {
     if (mutationCallback) {
       mutationCallback(mutationRequest);
     }
   });
   const maybePromise = implementation.sendMutation(mutationRequest);
   if (maybePromise) {
     throwFailedPromise(Promise.resolve(maybePromise));
   }
 }
Esempio n. 3
0
 sendQueries(queryRequests: Array<RelayQueryRequest>): void {
   profileQueue(queryRequests);
   const implementation = this._getImplementation();
   this._subscribers.forEach(({queryCallback}) => {
     if (queryCallback) {
       queryRequests.forEach(request => {
         // $FlowIssue #10907496 queryCallback was checked above
         queryCallback(request);
       });
     }
   });
   const maybePromise = implementation.sendQueries(queryRequests);
   if (maybePromise) {
     throwFailedPromise(Promise.resolve(maybePromise));
   }
 }
Esempio n. 4
0
  constructor(
    {fetchMode, forceIndex, query}: PendingQueryParameters,
    {
      pendingFetchMap,
      preloadQueryMap,
      storeData,
    }: {
      pendingFetchMap: {[queryID: string]: PendingState},
      preloadQueryMap: PromiseMap<Object, Error>,
      storeData: RelayStoreData,
    },
  ) {
    const queryID = query.getID();
    this._forceIndex = forceIndex;
    this._pendingFetchMap = pendingFetchMap;
    this._preloadQueryMap = preloadQueryMap;
    this._query = query;
    this._resolvedDeferred = new Deferred();
    this._resolvedQuery = false;
    this._storeData = storeData;

    this._fetchQueryPromise = fetchMode === RelayFetchMode.PRELOAD
      ? this._preloadQueryMap.get(queryID)
      : storeData.getNetworkLayer().fetchRelayQuery(query);

    this._fetchedQuery = false;
    this._error = null;

    this._pendingFetchMap[queryID] = {
      fetch: this,
      query: query,
    };
    throwFailedPromise(
      this._fetchQueryPromise.then(
        this._handleQuerySuccess.bind(this),
        this._handleQueryFailure.bind(this),
      ),
    );
  }