private async resolveFileChanges()

in src/view/treeNodes/pullRequestNode.ts [158:241]


	private async resolveFileChanges(): Promise<(RemoteFileChangeNode | InMemFileChangeNode)[]> {
		if (!this.pullRequestModel.isResolved()) {
			return [];
		}

		const data = await this.pullRequestModel.getFileChangesInfo();

		// Merge base is set as part of getPullRequestFileChangesInfo
		const mergeBase = this.pullRequestModel.mergeBase;
		if (!mergeBase) {
			return [];
		}

		const rawChanges = await parseDiff(data, this._folderReposManager.repository, mergeBase);

		return rawChanges.map(change => {
			const headCommit = this.pullRequestModel.head!.sha;
			const parentFileName = change.status === GitChangeType.RENAME ? change.previousFileName! : change.fileName;
			if (change instanceof SlimFileChange) {
				return new RemoteFileChangeNode(
					this,
					this.pullRequestModel,
					change.status,
					change.fileName,
					change.previousFileName,
					change.blobUrl,
					toPRUri(
						vscode.Uri.file(
							resolvePath(this._folderReposManager.repository.rootUri, change.fileName),
						),
						this.pullRequestModel,
						change.baseCommit,
						headCommit,
						change.fileName,
						false,
						change.status,
					),
					toPRUri(
						vscode.Uri.file(
							resolvePath(this._folderReposManager.repository.rootUri, parentFileName),
						),
						this.pullRequestModel,
						change.baseCommit,
						headCommit,
						change.fileName,
						true,
						change.status,
					),
				);
			}

			console.log(vscode.Uri.file(resolvePath(this._folderReposManager.repository.rootUri, change.fileName)));

			const changedItem = new InMemFileChangeNode(
				this._folderReposManager,
				this,
				this.pullRequestModel as (PullRequestModel & IResolvedPullRequestModel),
				change,
				change.previousFileName,
				toPRUri(
					vscode.Uri.file(resolvePath(this._folderReposManager.repository.rootUri, change.fileName)),
					this.pullRequestModel,
					change.baseCommit,
					headCommit,
					change.fileName,
					false,
					change.status,
				),
				toPRUri(
					vscode.Uri.file(resolvePath(this._folderReposManager.repository.rootUri, parentFileName)),
					this.pullRequestModel,
					change.baseCommit,
					headCommit,
					change.fileName,
					true,
					change.status,
				),
				change.isPartial,
				change.patch
			);

			return changedItem;
		});
	}