Skip to content

Instantly share code, notes, and snippets.

import React from 'react'
export default function DataItem({ dataItem }) {
return (
<div>
<div className="m-auto mt-10 py-3">
<div className="bg-white shadow-2xl" >
<div>
<img src={dataItem.fields.image} />
</div>
import React from 'react'
export default function Navbar() {
return (
<header className="bg-white shadow border-t-4 border-indigo-600">
<div className="container mx-auto px-6 py-4">
<div className="flex items-center justify-between">
<div>
<a className="flex items-center text-gray-800 hover:text-indigo-600" href="#">
<svg className="h-6 w-6 sm:h-6 sm:w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
import Head from 'next/head';
import { table, minifyRecords } from './api/utils/airtable';
import {DataItemsContext} from '../contexts/dataContext';
import Navbar from '../components/Navbar';
import DataItem from '../components/DataItem';
import {useEffect, useContext} from 'react';
export default function Home({initialDataItems}) {
const { dataItems, setDataItems } = useContext(DataItemsContext);
import '../styles/globals.css'
import '../styles/index.css';
import {DataItemsProvider} from '../contexts/dataContext';
function MyApp({ Component, pageProps }) {
return (
<DataItemsProvider>
<div className="bg-gray-800 pattern py-5">
<Component {...pageProps} />
</div>
import {createContext, useState} from 'react';
const DataItemsContext = createContext();
const DataItemsProvider = ({children}) => {
const [dataItems, setDataItems] = useState([]);
const refreshDataItems = async () => {
try {
import { table, minifyRecords } from './utils/airtable';
export default async (req, res) => {
try {
const records = await table.select({}).firstPage();
const minifiedRecords = minifyRecords(records);
res.statusCode = 200;
res.json(minifiedRecords);
} catch (err) {
res.statusCode = 500;
const airtable = require('airtable');
const base = new airtable({apiKey: `${process.env.AIRTABLE_API_KEY}`}).base(`${process.env.AIRTABLE_BASE_ID}`);
const table = base(`${process.env.AIRTABLE_TABLE_NAME}`);
const minifyRecords = (records) => {
return records.map((record) => getMinifiedRecord(record));
};
const getMinifiedRecord = (record) => {
return {
function getXGithubDelivery(header) {
return commitURL = delve(header, 'x-github-delivery');
}
function getXGithubEvent(header) {
return commitURL = delve(header, 'x-github-event');
}
function postToJenkins(payload, jenkinsTargetUrl, token, basicAuth, XGithubDelivery) {
let data = new FormData();
data.append('payload', `${JSON.stringify(payload)}`);
let config = {
method: 'post',
url: `${jenkinsTargetUrl}buildWithParameters?token=${token}`,
headers: {
'X-Github-Delivery': `${XGithubDelivery}`,
function updateCommitStatus(commitURL, state, jenkinsTargetUrl, message, accessToken) {
let data = JSON.stringify({"state":`${state}`,"target_url":`${jenkinsTargetUrl}`,"description":`${message}`,"context":"continuous-integration/jenkins"});
let config = {
method: 'post',
url: `${commitURL}?access_token=${accessToken}`,
headers: {
'Content-Type': 'application/json'
},
data : data