// ----< fetches file's metadata from server and displays it >-------------------- private void MetadataLink_ClickAction(RepoFile repoFile) { RepoClientState state = (RepoClientState)this.DataContext; string metadataKey = RepoFile.stringify(repoFile); if (state.BrowseProps.MetadataDict.ContainsKey(metadataKey)) { DisplayMetadata(repoFile, state.BrowseProps.MetadataDict[metadataKey]); } else { state.ServerCommService.Requests.GetFileMetadata(repoFile.PackageName, repoFile.Namespace, repoFile.Filename, repoFile.Version, state.ServerConnProps.UserId, (GetFileMetadataResponse metadataRes) => { state.BrowseProps.MetadataDict[metadataKey] = metadataRes.Metadata; this.Dispatcher.Invoke(() => DisplayMetadata(repoFile, state.BrowseProps.MetadataDict[metadataKey])); }, true); } }