Skip to content

Commit cb6b5c7

Browse files
Merge pull request #216 from notion-dotnet/209-add-support-for-link-to-page-block-type
Add support for link_to_page block type ✨
2 parents 492fb02 + 20ed709 commit cb6b5c7

File tree

5 files changed

+55
-0
lines changed

5 files changed

+55
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using Newtonsoft.Json;
2+
3+
namespace Notion.Client
4+
{
5+
public class LinkToPageUpdateBlock : UpdateBlock, IUpdateBlock
6+
{
7+
[JsonProperty("link_to_page")]
8+
public IPageParentInput LinkToPage { get; set; }
9+
}
10+
}

Src/Notion.Client/Models/Blocks/BlockType.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ public enum BlockType
8585
[EnumMember(Value = "template")]
8686
Template,
8787

88+
[EnumMember(Value = "link_to_page")]
89+
LinkToPage,
90+
8891
[EnumMember(Value = "unsupported")]
8992
Unsupported
9093
}

Src/Notion.Client/Models/Blocks/IBlock.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ namespace Notion.Client
2323
[JsonSubtypes.KnownSubType(typeof(HeadingTwoBlock), BlockType.Heading_2)]
2424
[JsonSubtypes.KnownSubType(typeof(HeadingThreeeBlock), BlockType.Heading_3)]
2525
[JsonSubtypes.KnownSubType(typeof(ImageBlock), BlockType.Image)]
26+
[JsonSubtypes.KnownSubType(typeof(LinkToPageBlock), BlockType.LinkToPage)]
2627
[JsonSubtypes.KnownSubType(typeof(NumberedListItemBlock), BlockType.NumberedListItem)]
2728
[JsonSubtypes.KnownSubType(typeof(ParagraphBlock), BlockType.Paragraph)]
2829
[JsonSubtypes.KnownSubType(typeof(PDFBlock), BlockType.PDF)]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using Newtonsoft.Json;
2+
3+
namespace Notion.Client
4+
{
5+
public class LinkToPageBlock : Block, IColumnChildrenBlock, INonColumnBlock
6+
{
7+
public override BlockType Type => BlockType.LinkToPage;
8+
9+
[JsonProperty("link_to_page")]
10+
public IPageParent LinkToPage { get; set; }
11+
}
12+
}

Test/Notion.IntegrationTests/IBlocksClientTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,35 @@ private static IEnumerable<object[]> BlockData()
506506
Assert.Null(templateBlock.Template.Children);
507507
Assert.Equal("Test Template 2", templateBlock.Template.Text.OfType<RichTextText>().First().Text.Content);
508508
})
509+
},
510+
new object[]
511+
{
512+
new LinkToPageBlock()
513+
{
514+
LinkToPage = new PageParent
515+
{
516+
Type = ParentType.PageId,
517+
PageId = "533578e3edf14c0a91a9da6b09bac3ee"
518+
}
519+
},
520+
new LinkToPageUpdateBlock()
521+
{
522+
LinkToPage = new ParentPageInput
523+
{
524+
PageId = "3c357473a28149a488c010d2b245a589"
525+
}
526+
},
527+
new Action<IBlock>(block =>
528+
{
529+
Assert.NotNull(block);
530+
var linkToPageBlock = Assert.IsType<LinkToPageBlock>(block);
531+
532+
var pageParent = Assert.IsType<PageParent>(linkToPageBlock.LinkToPage);
533+
534+
// TODO: Currently the api doesn't allow to update the link_to_page block type
535+
// This will change to updated ID once api start to support
536+
Assert.Equal(Guid.Parse("533578e3edf14c0a91a9da6b09bac3ee"), Guid.Parse(pageParent.PageId));
537+
})
509538
}
510539
};
511540
}

0 commit comments

Comments
 (0)