// ----< 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);
            }
        }