From 9840c062caec602414cd7d2df2cef62d814e20a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Erik=20Hedenstro=CC=88m?= <erik@hedenstroem.com>
Date: Thu, 14 Sep 2023 00:04:42 +0200
Subject: [PATCH] Fixes for latest version of Continue

---
 context_providers/confluence_context_provider.py | 13 ++++++++++---
 context_providers/gitlab_context_provider.py     |  3 +++
 context_providers/jira_context_provider.py       | 13 ++++++++++---
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/context_providers/confluence_context_provider.py b/context_providers/confluence_context_provider.py
index 8c9d830..181ced0 100644
--- a/context_providers/confluence_context_provider.py
+++ b/context_providers/confluence_context_provider.py
@@ -13,6 +13,10 @@ from markdownify import markdownify as md
 
 class ConfluenceContextProvider(ContextProvider):
     title = "confluence"
+    display_title = "Confluence Pages"
+    description = "Reference Confluence pages"
+    dynamic = True
+    requires_query = True
 
     server: str
     username: str
@@ -37,13 +41,16 @@ class ConfluenceContextProvider(ContextProvider):
         return [self.BASE_CONTEXT_ITEM]
 
     async def get_item(self, id: ContextItemId, query: str) -> ContextItem:
-        if id.item_id != self.CONFLUENCE_CONTEXT_ITEM_ID:
-            raise Exception("Invalid item id")
+        if not id.provider_title == self.title:
+            raise Exception("Invalid provider title for item")
+        page_id = query.lstrip(self.title + " ").strip()
+        if page_id is None or page_id == "":
+            return None
         confluence = Confluence(
             url=self.server, username=self.username, password=self.token, cloud=True
         )
         page = confluence.get_page_by_id(
-            query.lstrip(self.title + " "),
+            page_id,
             expand="space,body.view",
             status=None,
             version=None,
diff --git a/context_providers/gitlab_context_provider.py b/context_providers/gitlab_context_provider.py
index a17e5a0..a2c4d75 100644
--- a/context_providers/gitlab_context_provider.py
+++ b/context_providers/gitlab_context_provider.py
@@ -12,6 +12,9 @@ from gitlab import Gitlab
 
 class GitLabContextProvider(ContextProvider):
     title = "gitlab"
+    display_title = "GitLab Issues"
+    description = "Reference GitLab issues"
+    dynamic = False
 
     server: str
     token: str
diff --git a/context_providers/jira_context_provider.py b/context_providers/jira_context_provider.py
index ca8e38c..84aa6a0 100644
--- a/context_providers/jira_context_provider.py
+++ b/context_providers/jira_context_provider.py
@@ -12,6 +12,10 @@ from atlassian import Jira
 
 class JIRAContextProvider(ContextProvider):
     title = "jira"
+    display_title = "Jira Issues"
+    description = "Reference Jira issues"
+    dynamic = True
+    requires_query = True
 
     server: str
     username: str
@@ -36,12 +40,15 @@ class JIRAContextProvider(ContextProvider):
         return [self.BASE_CONTEXT_ITEM]
 
     async def get_item(self, id: ContextItemId, query: str) -> ContextItem:
-        if id.item_id != self.JIRA_CONTEXT_ITEM_ID:
-            raise Exception("Invalid item id")
+        if not id.provider_title == self.title:
+            raise Exception("Invalid provider title for item")
+        issue_key = query.lstrip(self.title + " ").strip()
+        if issue_key is None or issue_key == "":
+            return None
         jira = Jira(
             url=self.server, username=self.username, password=self.token, cloud=True
         )
-        issue = jira.issue(query.lstrip(self.title + " "))
+        issue = jira.issue(issue_key)
         ctx_item = self.BASE_CONTEXT_ITEM.copy()
         ctx_item.description.name = issue["key"]
         ctx_item.description.description = issue["fields"]["summary"]
-- 
GitLab